我希望我的正则表达式仅在x
中存在re.match
时才匹配。否则,if re.match("\s+WID\s[(\d+)\.(\d+)]", x):
print x
应返回0(即不匹配)。
我使用以下内容:
SVG
这将返回所有条件1,2,3的匹配。你能帮助我使用只返回第一个匹配的表达式和其他匹配的表达式吗?
答案 0 :(得分:2)
您只想知道"WID 0.12 ;"
是否在x
。
使用re.match
就像使用火箭筒杀死苍蝇一样(而且它很慢)。
这就足够了:
if "WID 0.12 ;" in x:
print x
修改:
由于数值不是必需的" 0.12" (根据下面的评论),使用正则表达式是合理的。这应该有效:
if re.match(" *WID \d+.\d+ ;",x):
print x
答案 1 :(得分:1)
正如我在评论中所说,正确的正则表达式是re.match(".*WID\s(0)\.(12).*", x)
(具有匹配的组)或re.match(".*WID\s0\.12.*", x)
(没有匹配的组)。
如果您想匹配任何数字组合,可以使用re.match(".*WID\s(\d)\.(\d).*", x)
然而,正如Tibo所说,你可以用
来做if "WID 0.12" in x:
print x
但这可能会给0.12x
带来误报答案 2 :(得分:1)
捕获组周围的方括号会导致错误(以及放置WIDTH而不是WID的事实)
你的正则表达式应该是:
WID \ S(\ d +)。(\ d +)
答案 3 :(得分:1)
感谢您的意见和建议。我将在下一篇文章中处理细节,这会导致与某些人混淆。
感谢cromod(我做的小修改)
if re.match("\sWID\s(\d+).(\d+) ;", x):
print x
这很有效。