Regex.Match()与子字符串不匹配

mis*_*hap 0 c# regex

这很简单,但我无法弄明白.我想找到这个正则表达式的子字符串.它将是马赫"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; 
Run Code Online (Sandbox Code Playgroud)

fcu*_*sta 6

尝试删除^和$:

Regex regex = new Regex(@"[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}", RegexOptions.None);
Run Code Online (Sandbox Code Playgroud)
  • ^:匹配必须从字符串或行的开头开始.
  • $:匹配必须发生在字符串的末尾,或者在行或字符串末尾的\n之前.

如果您只想在单词边界匹配,可以按照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);
Run Code Online (Sandbox Code Playgroud)

  • 如果你想匹配"asdf M4N 3M5 adsf"而不是"asdfM4N 3M5adsf",那么你需要在模式的两端添加`\ b`. (2认同)