【发布时间】:2016-03-14 12:02:12
【问题描述】:
我在捕获句子中的特定字符串时遇到了一些麻烦。
我使用的正则表达式是 \b[0-9]{9,12}\b 来捕获 9 到 12 位数字之间的数字。我使用它来指定确切数字的边界,但问题是,例如,当我有一个与此正则表达式匹配的数字后跟一个点时,正则表达式仍然匹配并给我带来很多麻烦。
在我搜索时,问题是\b 也使用了一些特殊字符作为分隔符,对吧?那么有没有办法考虑,例如 123456789. 整个字符串和正则表达式将与该示例不匹配?
谢谢!
【问题讨论】:
-
你可以使用
\b(?<!\.)[0-9]{9,12}(?!\.)\b -
我刚刚删除了“
-
为什么要用
(?!\.)替换(?<!\.)?这是没有意义的,因为数字不能是点。必须是\b(?<!\.)[0-9]{9,12}(?!\.)\b -
这只是一个问题,因为我使用的是在线正则表达式测试器,它在这一点上指责错误。
-
您应该使用 .NET 兼容的在线测试仪:regexhero.net、regexstorm.net 等。或者使用 Ultrapico Expresso(一个免费工具,可以在 regex101.com 上解释模式)。