给出以下字符串:
s = 'abcdefg*'
我如何匹配它或任何其他仅由小写字母组成的字符串和可选以星号结尾?我认为以下内容可行,但事实并非如此:
re.match(r"^[a-z]\*+$", s)
它提供None
而不是匹配对象。
答案 0 :(得分:15)
我如何匹配它或任何其他仅由小写字母组成的字符串,并且可选地以星号结尾?
以下将会这样做:
re.match(r"^[a-z]+[*]?$", s)
^
匹配字符串的开头。[a-z]+
匹配一个或多个小写字母。[*]?
匹配零或一个星号。$
匹配字符串的结尾。您的原始正则表达式恰好匹配一个小写字符,后跟一个或多个星号。
答案 1 :(得分:4)
\*?
表示0或1星号:
re.match(r"^[a-z]+\*?$", s)
答案 2 :(得分:2)
re.match(r"^[a-z]+\*?$", s)
[a-z]+
匹配小写字母序列,\*?
匹配可选的文字*
聊天。
答案 3 :(得分:1)
尝试
re.match(r"^[a-z]*\*?$", s)
这意味着“包含零个或多个小写字符的字符串(因此是第一个星号),后跟零或一个星号(转义星号后面的问号)。
你的正则表达式意味着“正好是一个小写字符后跟一个或多个星号”。
答案 4 :(得分:0)
你忘记了[a-z]匹配后的+,表示你想要一个或多个(现在它只匹配一个)。
re.match(r"^[a-z]+\*+$", s)