我正在尝试编写一个正则表达式,它匹配以连字符 (-) 开头的行或以空格或制表符开头然后有一个连字符的行。所以它应该匹配以下内容:
- hello!
- hello!
这是我到目前为止所得到的:^(\-)
。但这与上面的第二个示例不匹配,因为它要求第一个字符是连字符。
我正在尝试编写一个正则表达式,它匹配以连字符 (-) 开头的行或以空格或制表符开头然后有一个连字符的行。所以它应该匹配以下内容:
- hello!
- hello!
这是我到目前为止所得到的:^(\-)
。但这与上面的第二个示例不匹配,因为它要求第一个字符是连字符。
你可以试试
^\s*-
^
: 字符串的开始\s*
: 零个或多个空白字符-
: 文字-
(你不需要在字符类之外转义它)您可以通过在开头使 0 个或多个空格可选匹配来使用此正则表达式:
^\s*-
上面的(使用 \s*)对于这种情况是最简单的,但一般来说,你总是可以使用 | 句法:
re.match('^-|^\s+-', '- hello')
<_sre.SRE_Match object at 0x0000000054E72030>
re.match('^-|^\s+-', ' - hello')
<_sre.SRE_Match object at 0x0000000054E72030>
re.match('^-|^\s+-', ' + hello')
None
^-
是 - 开头的情况,`^\s+-' 有一个或多个空格,而 | 选择其中之一。