寻找匹配字符串开头减去以下设置结尾之一的正则表达式:
_A
_B
_C
_ZZ
例如:
1. blah needs to match blah
2. blah_A needs to match blah
3. blahblah_A needs to match blahblah
4. blah_D needs to match blah_D
5. blah_Z needs to match blah_Z
6. blah_ZZ needs to match blah
7. blah_Ablah needs to match blah_Ablah
我尝试过的尝试不成功的是:
.*(?=(_(A|B|C|ZZ)))
did not match 1,4,5, and 7 correctly
.*([^(_A$)]|[^(_B$)]|[^(_C$)]|[^(_ZZ$)])
did not match any correctly
使用的正则表达式是javascript
有人有任何想法吗?
答案 0 :(得分:3)
问题是.*
可以使用整个字符串(它会)。最简单的解决方法是使重复不成熟,并在可选的_
结尾后要求字符串结束:
.*?(?=(_(A|B|C|ZZ))?$)
这种方式.*
如果要排除它们,则不会使用结束字符。
作为次要优化,您可以避免捕获组(如果您不需要它)并使用字符类来表示单字符结尾:
.*?(?=(?:_(?:[ABC]|ZZ))?$)