如何在正则表达式中匹配整个字符串?

How to match the whole string in RegEx?

提问人:timmkrause 提问时间:9/27/2011 最后编辑:abatishchevtimmkrause 更新时间:9/27/2011 访问量:6978

问:

我想要两种模式:

1. "number/number number&chars"
2. "number_number"

1. "\d/\d \s"
2. "\d_\d"

这些并不真正起作用。例如,第二个也匹配“asdf894343_84939”。 如何强制模式与整个字符串匹配?

C# .NET 正则表达式

评论


答:

9赞 robyaw 9/27/2011 #1

您需要使用行首和行尾字符;例如,对于第二种模式,请使用 .^$^\d_\d$

2赞 ipr101 9/27/2011 #2

您可以使用“\A”和“\Z”标志 -

Regex.IsMatch(subjectString, @"\A\d_\d\Z");

\A 匹配字符串中第一个字符之前的位置。不 受 MultiLine 设置的影响

\Z 匹配字符串最后一个字符之后的位置。不 受 MultiLine 设置的影响。

起始价 - http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

2赞 Vitaly Zemlyansky 9/27/2011 #3

对于第二个任务(number_number),您可以使用 [^a-zA-Z]\d.*_\d.*,在示例asdf894343_84939中,您将得到 894343_84939,或者如果您只想获得一位数字 - 删除 \d 之后的 .*。

在你的第一个任务中,你也可以使用 \d.*/\d[^\s],例如,如果你有 34/45 sss - 你会得到 34/45。如果你想从整个字符串中获取结果,你必须在你的模式中使用:^你的模式$

评论

0赞 timmkrause 9/27/2011
^\d.*\/\d.*$ 也匹配 3829/32a38。为什么?不应允许使用字符。如何在第二位数字后强制使用空格?
0赞 timmkrause 9/27/2011
1. ^\d*\/\d* \w.*$ 2.^\d*_\d*$