我有一个在 http://gskinner.com/RegExr/ 上测试过的正则表达式它工作正常,但是当我在我的 C# 应用程序中使用它时它失败了。
我的正则表达式:(?<!\d)\d{6}\K\d+(?=\d{4}(?!\d))
文字:4000751111115425
结果:111111
我的正则表达式有什么问题?
最佳答案
您遇到的问题是.NET 正则表达式不支持\K
,“丢弃目前已匹配的内容”。
我相信您的正则表达式翻译为“匹配超过 10 个 \d
数字的任何字符串,尽可能多的数字,并丢弃前 6 位和最后 4 位”。
我相信 .NET 兼容的正则表达式
(?<=\d{6})\d+(?=\d{4})
实现了同样的事情。请注意,由于 \d+
是贪婪的,因此不需要对 no-more-\d
进行否定前瞻/后视 - 引擎已经会尝试匹配尽可能多的数字可能。
关于c# - C# 中的正则表达式模式\K 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200596/