我正在寻找一个正则表达式,这将简化我没有使用OR正则表达式 - |
,因为我只想要一个捕获组。
规则是匹配行开头的任何内容,即x
后面的空格,然后是()中的单个大写字母。
或者在行的开头匹配()中的大写字母。
^\(([A-Z])\)|^x \(([A-Z])\) # works with |
x (A) should match A
(B) should match B
should not match (Z)
x should (A) not match
只需将x
和空格字符放在非捕获组中,然后使用?
quantifier将其设置为可选:
^(?:x )?\(([A-Z])\)
或者,您仍然可以使用|
运算符,但如果使用正Lookbehind,则只有一个捕获组:
(?<=^x |^)\(([A-Z])\)
Demo。
您甚至可以更进一步完全摆脱捕获组,如果您愿意,只需将大写字母作为整个匹配:
(?<=^x \(|^\()[A-Z](?=\))
Demo。
那将是一个过度杀伤力。我会选择第一个解决方案。