C#中的正则表达式模式\ K替代

Xan*_*rUu 5 c# regex

我有一个在http://gskinner.com/RegExr/上测试过的正则表达式,它可以工作,但是当我在C#应用程序中使用它时,它失败了。

我的正则表达式:(?<!\d)\d{6}\K\d+(?=\d{4}(?!\d)) 文本:4000751111115425结果:111111

我的正则表达式有什么问题?

Raw*_*ing 5

您遇到的问题是.NET正则表达式不支持\K“丢弃到目前为止已匹配的内容”。

我相信您的正则表达式翻译为“将超过十\d位数的任何字符串匹配到尽可能多的位数,并丢弃前6个和后4个”。

我相信符合.NET的正则表达式

(?<=\d{6})\d+(?=\d{4})
Run Code Online (Sandbox Code Playgroud)

实现相同的目的。请注意,由于贪婪,\d没有必要在负数前/后再反向\d+-引擎已经尝试匹配尽可能多的数字。