我正在将 Python 与re
模块一起使用,并尝试使用以下正则表达式匹配像decimal(4,1)
and之类的字符串decimal(10,5)
,而实际上只返回4,1
and 10,5
:
(?<=decimal\()\d+,\d+(?=\)$)
假设我用它编译正则表达式re.compile
并命名它DECIMAL
。如果我尝试decimal(4,1)
像这样搜索正则表达式的实例:
DECIMAL = re.compile(r'(?<=decimal\()\d+,\d+(?=\)$)')
results = DECIMAL.search('decimal(4,1)')
results.group(0)
根据需要返回字符串4,1
。但是,如果我尝试匹配而不是搜索:
results = DECIMAL.match('decimal(4,1)')
results
评估为None
。
该方法是否在match
这里失败,因为match
看起来将正则表达式的消耗部分与大海捞针的开头完全匹配,因此没有任何空间来确认前面的正长度模式?
至于立即实用,在这种情况下,简单的搜索是行不通的,因为DECIMAL
会出现不可接受的字符串,如snarfdecimal(4,1)
. 我应该在某处放入字符串开头的标记,还是我完全遗漏了其他东西?