Yoav - 编辑更清晰
您好, 我需要在文本文件中找到6位数字字符串。我在C#工作。 例如:
text text text123365 text text text
表达式必须跳过超过6的字符串:
text text text1233656 text text text
上述字符串不应返回任何结果,因为数字字符串的长度为7。
我想出了这个表达:[^0-9]([0-9]){6}[^0-9]
除了在行的开头或结尾处的字符串
外,它完美地运行123365text text text text text text
text text text text text text123365
是否可以识别这些情况?
答案 0 :(得分:6)
尝试:
(?<!\d)\d{6}(?!\d)
它说:
它会在字符串中的任何位置显示。
示例:
123365文本文本文本文本文本文本 文本文本文本文本text123365
匹配
123365文本文本文本234098文本文本文本 文本文本文本文本567890 text123365
匹配
答案 1 :(得分:6)
System.Text.RegularExpressions.Regex re =
new System.Text.RegularExpressions.Regex(@"(^|\D)(\d{6})($|\D)");
答案 2 :(得分:5)
我认为你最好使用负向前瞻和后视来做这个而不是边界或不匹配,比如:
(?<![0-9])[0-9]{6}(?![0-9])
答案 3 :(得分:0)
我即将提出与PatrikAkerstrand(\b\d{6}\b
)相同的建议。相反,我会发布一个指向a working example on Rubular的链接。
答案 4 :(得分:0)
答案 5 :(得分:-1)
我们需要匹配6个数字,在字符串中的任何位置(单行)。上述的这种变化最终为我们工作:
(^|\b)(\d{6})(\b|$)