c# - C# 中的正则表达式模式\K 替代方案

标签 c# regex

我有一个在 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/

相关文章:

regex - 如何在此正则表达式中包含负十进制数?

c# - 如何使用 LINQ to XML 检索更深层次的 sibling ?

python - 根据搜索字符串从多行文本中捕获一行

c# - 如何验证 MVC 上的 RadioButton?

c# - 时间更改为夏令时期间出现日期时间错误

python - REST API 的 Tornado URL 正则表达式 : how to not define the item ID argument for the POST action?

python - 如何在python中使用IF语句匹配两个相等的字符串

javascript - 排除 JavaScript 正则表达式匹配的部分内容

c# - 使用 "readonly record struct"类型作为方法的out参数,会引起装箱吗?

c# - 在 C# 中用正则表达式替换逗号