我有一个我在http://gskinner.com/RegExr/上测试的正则表达式并且它有效,但是当我在我的C#应用程序中使用它时它失败了。
我的正则表达式:(?<!\d)\d{6}\K\d+(?=\d{4}(?!\d))
文字:4000751111115425
结果:111111
我的正则表达式有什么问题?
答案 0 :(得分:4)
您遇到的这个问题是.NET正则表达式不支持\K
,“放弃到目前为止匹配的内容”。
我相信你的正则表达式会将“匹配任意超过10个\d
数字的字符串转换为尽可能多的数字,并丢弃前6个和后4个”。
我相信符合.NET的正则表达式
(?<=\d{6})\d+(?=\d{4})
实现同样的目标。请注意,由于\d
是贪婪的,因此不需要 - \d+
s的否定前瞻/后方 - 引擎已经尝试匹配尽可能多的数字。