有个很奇怪的问题。我的(Python)RegEx如下所示:
u'^.*(?:Grundfl|gfl|wfl|wohnfl|whg|wohnung).*(\s\d{1,3}[.,]?\d{1,2}?)\s*(?:m\u00B2|qm)'
在一个关于芬德尔()—term,这应该为以下文本抛出两个匹配项:“…从71m²到83m²” 然而,只有83个匹配。这个问题与数字(\s\d{1,3}[,])之间的可选空白有关?\d{1,2}?)平方米(?)?:m\u00B2 | qm),因为当我删除\s*时,只有71与预期匹配。我不知道我的正则表达式出了什么问题。 谢谢你的帮助!在
你为什么不试着用积极的眼光看问题呢?只要后面有
m²
或qm
,这将匹配1+个数字(内有可选逗号)。数字和单位之间有一个可选的空格:它不考虑您指定的单词,但您可以很容易地将该部分添加回。然而关于芬德尔()返回非重叠的结果,因此,如果在搜索中指定字符串的开头,它将只返回第一个值,因为它有效地“切掉”了匹配的部分,因此永远找不到第二个部分。在
可以将以下正则表达式与
re.findall
一起使用:参见regex demo。
re.findall
将只返回组1捕获值的列表。在图案细节:
(\d*[.,]?\d+)
-包含整数或浮点数的第1组:0+位数,后跟1或0.
或,
,后跟1+个数字\s*
-0+个空格(?:m\u00B2|qm)
-要么m²
要么qm
。参见Python demo:
^{pr2}$相关问题 更多 >
编程相关推荐