我正在将 Python 与re模块一起使用,并尝试使用以下正则表达式匹配像decimal(4,1)and之类的字符串decimal(10,5),而实际上只返回4,1and 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). 我应该在某处放入字符串开头的标记,还是我完全遗漏了其他东西?