Python正则表达式数

2022-05-21 06:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在提取这种格式字符串中的数字

  • AB1234型
  • AC1234型
  • 公元1234年

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

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

但我遇到了一个错误

look-behind requires fixed-width pattern

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

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


Tags: 字符串代码reinputsearch格式错误数字字符fixedlookrequiresbehindac1234ab1234
2条回答
网友
1楼 ·

使用此正则表达式:

re.search(r'(?=A[^"]\d*)\d*',input)
网友
2楼 ·

您的示例中的regex是有效的,所以我猜您的实际模式具有可变宽度的字符匹配(*+,等等)。不幸的是,regex look behinds不支持这些。我的另一个建议是,使用一个捕获组并提取匹配的字符串-

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+)'