Skip to main content
 首页 » 编程设计

c#之正则表达式匹配不包含完整的匹配文本

2024年04月30日43mfryf

我遇到一个正则表达式匹配问题,它不包含匹配内容的全文。它只包含月份名称的最后一个字母,以及日期和年份部分。我认为它会包含完整的月份名称、日期和年份部分,因为这是我的正则表达式包含的内容,但由于某些原因它没有。

这是我的示例,它复制了我的问题: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}"); 
                              ^                                                                                     ^ 

参见 this IDEONE demo

如果您不需要访问捕获的月份名称,请使用非捕获组 (?:...)。