Python Regex编号是通过看



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

  • AB1234
  • AC1234
  • ad1234

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

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

但是我遇到了一个错误。

look-behind需要固定宽度模式

那么有什么方便的方法来提取数字吗?现在我知道如何搜索两次以获取它们。谢谢。

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

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

m = re.search(r'AD+(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+)'

tye使用此正则发条:

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

最新更新