我遇到一个正则表达式匹配问题,它不包含匹配内容的全文。它只包含月份名称的最后一个字母,以及日期和年份部分。我认为它会包含完整的月份名称、日期和年份部分,因为这是我的正则表达式包含的内容,但由于某些原因它没有。
这是我的示例,它复制了我的问题: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
我希望它是:2015 年 11 月 2 日
请您参考如下方法:
使用 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}");
^ ^
如果您不需要访问捕获的月份名称,请使用非捕获组 (?:...)。
