我的正则表达式不采用第二个数字



我有这个字符串:

field = 1400 x 3524

我想将这些数字放入两个单独的变量中,以便执行乘法。我是这样做的:

num1 = re.match("(d{3,4})(?= x)", field).group(1)
num2 = re.match("(?<=x )(d{3,4})", field).group(1)

我使用第一个数字,但第二个数字是NoneType.

我做错了什么?

试试这个:

>>> import re
>>> a = 'field = 1400 x 3524'
>>> m = re.findall( r'd+', a )
>>> m
['1400', '3524']
>>> 

re模块文档中指出:

请注意,以正面的后瞻断言开头的模式 在正在搜索的字符串的开头不匹配;你会 最有可能要使用 search(( 函数而不是 match(( 功能

在您的情况下,这意味着您应该执行以下操作:

import re
field = "1400 x 3524"
num2 = re.search("(?<=x )(d{3,4})", field).group(0)
print(num2) # 3524

请注意,除了将match更改为search之外,我还group(1)更改为group(0)

最新更新