我正在使用C#而且我遇到了Regex的问题。
我有下一个文字:123_456
。我只需要捕获 123 ,同时确保 _456 存在并且所有内容都在一个字符串/行上。
所以,我尝试了下一个模式:^123(?=_456)$
并发现它不适用于终点线锚点,没有它就一切正常:^123(?=_456)
答案 0 :(得分:2)
你必须把锚放在前瞻中:
^123(?=_456$)
^
要确保没有_
以及字符串末尾的任何数字,请使用
^123(?=_\d+$)
在字符串开头使用^123(?=_456)$
123
匹配时,(?=_456)
lookahead会确保(或要求)紧靠右侧的_456
当前位置,然后想要匹配字符串的结尾。但是,这两个条件是互斥的:您可以在_456
之后立即使用字符串结尾和123
。