这很简单,但我无法弄明白。我想找到这个正则表达式的子字符串。它将是马赫“M4N 3M5”,但不符合以下内容:
const string text = "asdf M4N 3M5 adsf";
Regex regex = new Regex(@"^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$", RegexOptions.None);
Match match = regex.Match(text);
string value = match.Value;
答案 0 :(得分:6)
尝试删除^和$:
Regex regex = new Regex(@"[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}", RegexOptions.None);
如果您只想在单词边界匹配,可以按照Mike Strobel的建议使用\ b:
Regex regex = new Regex(@"\b[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}\b", RegexOptions.None);
答案 1 :(得分:2)
我知道这个问题已经得到解答,但我注意到你的模式中有两件事要强调:
无需提及任何令牌的单个实例。
例如:(注意缺少的
{1}
)\ d {1} = \ d
[A-Z] {1} = [A-Z]
- 醇>
另外,我建议您不要在模式使用中输入
<space>
&#39; \ s&#39;相反,因为如果错误地按下退格键,你可能不会 能够找出错误,运行代码将停止 工作
就个人而言,我建议你使用\b
,因为它最适合这里。