regexp:匹配字符组或行尾

gcb*_*gcb 28 python regex

你如何在(字符组)中匹配^(行首)和$(行尾[])?


简单的例子

haystack字符串: zazty

规则:

  1. 匹配任何"z"或"y"
  2. 如果在前面
    1. 一个"a","b"; 要么
    2. 在行的开头.

传球:匹配前两个"z"

一个可行的正则表达式是:
(?:^|[aAbB])([zZyY])

但我一直认为它会更清晰,类似于字符组内部的开头/结尾
[^aAbB]([zZyY])
(在该示例中假设^线的开头,而不是它的真实位置,字符组为负)


注意:使用python.但是知道在bash和vim上也会很好.

更新:再次阅读它所说的一组字符的手册,一切都失去了它的特殊含义,除了字符类(例如\w)

在字符类列表中,有\A一行的开头,但这不起作用[\AaAbB]([zZyY])

知道为什么吗?

mat*_*fee 28

你不能匹配一个^$一个,[]因为在一个字符类中唯一具有特殊含义的字符是^(如"除了"之外)和-(如"范围")(以及字符类).\A并且\Z不要算作角色类.

这适用于正则表达式的所有(标准)风格,所以你坚持(^|[stuff])($|[stuff])(实际上并不是那么糟糕).

  • 做'm = re.search('(?:a)(z)','zazty'); 打印m.group(1)`。那将只提取“ z”。或者,环顾四周是其他评论者建议的0宽度。 (2认同)