正则表达式匹配以某个字符或空格开头的行,然后是该字符

时间:2013-10-09 14:12:07

标签: regex

我正在尝试编写一个正则表达式,该表达式匹配以连字符( - )开头的行,以空格或制表符开头,然后使用连字符。所以它应该匹配以下内容:

- hello!
            - hello!

这是我到目前为止所得到的:^(\-)。但这与上面的第二个例子不匹配,因为它要求第一个字符是连字符。

3 个答案:

答案 0 :(得分:40)

你可以尝试

^\s*-
  • ^:字符串的开头
  • \s*:零个或多个空白字符
  • -:文字-(你不需要在角色类之外逃避它)

答案 1 :(得分:7)

您可以在开头使用0或更多空格可选匹配来使用此正则表达式:

^\s*-

答案 2 :(得分:0)

以上(使用\ 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 + - '是一个或多个空格,并且|选择其中之一。