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

时间:2013-01-07 17:04:59

标签: c# regex

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

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

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

1 个答案:

答案 0 :(得分:4)

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

我相信你的正则表达式会将“匹配任意超过10个\d数字的字符串转换为尽可能多的数字,并丢弃前6个和后4个”。

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

(?<=\d{6})\d+(?=\d{4})

实现同样的目标。请注意,由于\d是贪婪的,因此不需要 - \d+ s的否定前瞻/后方 - 引擎已经尝试匹配尽可能多的数字。