正则表达式空格

时间:2017-03-22 16:08:02

标签: python regex

我一直在努力教自己正则表达,因为我到目前为止大部分时间都避免使用它。

但是我有一个益智游戏。

这是代码。

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不匹配,但我希望"生锈的指甲"匹配这个。

我已经把我可以在重新设置中找到的每个空白角色都放了,但它并没有把它拿起来。我也试过单一的组合。它们似乎与生锈的指甲相匹配。

有人可以告诉我我做错了什么吗? (顺便说一句,我搜索了这个网站,空白字符似乎就是我在这里的字符。

所以我的目标是让所有的比赛都成真,除了超级推力。

2 个答案:

答案 0 :(得分:1)

您需要确保该模式允许在开头匹配 0 或更多字母,将[a-z]+替换为[a-z]*

re.match(r'[a-z]*rust[a-z0-9\s]+', item)
                ^

请注意,re.match仅在字符串开头处锚定匹配项,如果您希望整个输入字符串与您的模式匹配,请在模式的末尾添加$

请参阅regex demo

答案 1 :(得分:0)

问题是\s+无法在[]内执行您想要的操作。

你需要像rust[a-z0-9]+\s+[a-z0-9]+这样的东西,这将占用所需的空间而不是可选的。