Python正则表达式匹配字面星号

24 投票
5 回答
47247 浏览
提问于 2025-04-17 12:19

给定以下字符串:

s = 'abcdefg*'

我该如何匹配这个字符串,或者其他任何只由小写字母组成的字符串,并且可选地以星号结尾呢?我以为下面这个方法可以,但实际上并不行:

re.match(r"^[a-z]\*+$", s)

它返回的是None,而不是一个匹配对象。

5 个回答

3
re.match(r"^[a-z]+\*?$", s)

这个 [a-z]+ 是用来匹配一串小写字母的,而 \*? 则是用来匹配一个可选的字面意思的 * 字符,也就是说这个星号可以有也可以没有。

7

\*? 的意思是“零个或一个星号”:

re.match(r"^[a-z]+\*?$", s)
30

我该如何匹配一个只由小写字母组成的字符串,且这个字符串可以选择性地以一个星号结尾呢?

下面的内容可以做到这一点:

re.match(r"^[a-z]+[*]?$", s)
  1. ^表示字符串的开始。
  2. [a-z]+表示一个或多个小写字母。
  3. [*]?表示零个或一个星号。
  4. $表示字符串的结束。

你原来的正则表达式只匹配一个小写字母后面跟着一个或多个星号。

撰写回答