我遇到的正则表达式匹配问题不包含匹配内容的全文。它只包含月份名称的最后一个字母,以及日期和年份部分。我认为它将包含完整的月份名称,以及日期和年份部分,因为这是我的正则表达式包含的内容,但由于某种原因它不会。
以下是我复制问题的示例:https://ideone.com/wJPj1d
using System;
using System.Text;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string text = "<strong>Date of Hire: </strong>November 2, 2015<br />";
string foundMatch = "No match found";
Regex dateFormat = new Regex("[January|February|March|April|May|June|July|August|September|October|November|December] [0-9]{1,2}, [0-9]{4}");
MatchCollection matches = dateFormat.Matches(text);
if(matches.Count > 0)
{
foundMatch = matches[0].ToString();
}
Console.WriteLine(foundMatch);
}
}
我得到的输出是:r 2, 2015
我期望的是:November 2, 2015
答案 0 :(得分:3)
使用group (...)
,而不是character class [...]
:
Regex dateFormat = new Regex("(January|February|March|April|May|June|July|August|September|October|November|December) [0-9]{1,2}, [0-9]{4}");
^ ^
如果您不需要访问捕获的月份名称,请使用非捕获组(?:...)
。