我正在使用C#而且我的Regex存在问题。
我有下一个文字:123_456
。我需要捕获只有123,同时确保_456存在并且所有内容都在一个字符串/行上。
所以,我尝试了下一个模式:^123(?=_456)$
,发现它不适用于终点线锚,没有它一切都很好:^123(?=_456)
您必须将锚点放入前瞻:
^123(?=_456$)
^
为了确保没有_
和字符串末尾的任何数字,请使用
^123(?=_\d+$)
当使用^123(?=_456)$
时123
在字符串的开头匹配,那么(?=_456)
lookahead确保(或要求)当前位置右边有_456
,然后想要匹配字符串的结尾。但是,这两个条件是相互排斥的:你可以在_456
之后同时拥有字符串的结尾和123
。