为什么终点线锚在前瞻后不起作用?

问题描述 投票:2回答:1

我正在使用C#而且我的Regex存在问题。

我有下一个文字:123_456。我需要捕获只有123,同时确保_456存在并且所有内容都在一个字符串/行上。

所以,我尝试了下一个模式:^123(?=_456)$,发现它不适用于终点线锚,没有它一切都很好:^123(?=_456)

c# .net regex
1个回答
2
投票

您必须将锚点放入前瞻:

^123(?=_456$)
           ^ 

为了确保没有_和字符串末尾的任何数字,请使用

^123(?=_\d+$)

当使用^123(?=_456)$123在字符串的开头匹配,那么(?=_456) lookahead确保(或要求)当前位置右边有_456,然后想要匹配字符串的结尾。但是,这两个条件是相互排斥的:你可以在_456之后同时拥有字符串的结尾和123

© www.soinside.com 2019 - 2024. All rights reserved.