Python正则表达式通过查看后面的数字

标签 python regex

我正在以这种格式字符串提取数字。

  • AB1234
  • AC1234
  • AD1234

如您所见,A 始终存在,第二个字符不包括 "。我编写下面的代码来提取数字。

re.search(r'(?<=A[^"])\d*',input)

但是我遇到了错误。

look-behind requires fixed-width pattern

那么有没有什么方便的方法来提取数字呢?现在我知道如何搜索两次才能获得它们。提前致谢。

注A是一个模式,实际上A是一个长字符串中的世界。

最佳答案

您的示例中的正则表达式有效,因此我猜测您的实际模式具有可变宽度字符匹配(*+ 等)。不幸的是,正则表达式查找不支持这些。我可以建议的替代方案是使用捕获组并提取匹配的字符串 -

m = re.search(r'A\D+(\d+)', s)
if m:
    r = m.group(1)

详细信息

A      # your word 
\D+    # anything that is not a digit
(      # capture group
\d+    # 1 or more digits
)
<小时/>

如果您想处理双引号,可以通过包含字符类对正则表达式进行轻微修改 -

r'A[^\d"]+(\d+)'

关于Python正则表达式通过查看后面的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47826190/

相关文章:

java - 处理缩写时用 "."(点)拆分字符串

python - 如何使用 OpenCV 在 Python 中绘制灰度图像的 32-Bin 直方图

python - 用python将short-hostname添加到/etc/hosts文件中

python (Pandas) 根据不同列满足的条件从第 0 列输出值

php - 解析 Skype 日志

regex - 除了空格用双引号引起来之外,Perl如何在空格上分割行?

regex - 使用Regexp过滤Google Analytics(分析)报告

python - 索引错误: list index out of range: I can uderstand why this error happens

python - 从 Pivot reshape 和选择 Pandas

javascript - 如何修改电话号码的正则表达式并仅接受数字