我一直在尝试自学正则表达式,因为到目前为止我大多以某种方式避免使用它。
但是我有一个益智游戏。
这是代码。
import re
listostuff = [ "crustybread", "rusty nail", "grust0", "superrust"]
for item in listostuff:
result = True if re.match(r'[a-z]+rust[a-z0-9\s \t\s+]+', item) else False
print item, result
结果如下:
crustybread True
rusty nail False
grust0 True
superrust False
我希望 superrust 不匹配,但我希望“生锈的钉子”与此匹配。
我已经将我能找到的所有空白字符都放入了重新设置中,但它没有拾取它。我也尝试过与单一的组合。它们似乎与生锈的钉子不匹配。
有人可以告诉我我做错了什么吗? (顺便说一句,我搜索过这个网站,空白字符似乎就是我这里的字符。
所以我的目标是让除 superrust 之外的所有匹配都正确。
最佳答案
您需要确保模式允许在开头匹配0个或更多字母,将[a-z]+
替换为[a-z]*
:
re.match(r'[a-z]*rust[a-z0-9\s]+', item)
# ^
请注意,re.match
仅将匹配锚定在字符串的开头,如果您希望整个输入字符串匹配,请在模式末尾添加 $
你的模式。
请参阅regex demo .
关于python - 正则表达式空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42957072/