2012-10-09 134 views
1

表達我除了使用正則表達式在C#中,即得與模式匹配的表情在網上搜索沒有正則表達式的知識。定期匹配日期

我想有正則表達式在符合以下兩個所述格式,無需年部分日期。

  1. 8 October8 Oct

  2. September 19Sep 19

請幫我,搜索谷歌並沒有幫助我。

+0

爲什麼這個問題投票決定關閉爲'太localized'?這對我來說似乎是一個完全正確的問題。這個問題可能被投票結束的唯一正當理由是「對於缺乏來自OP的研究並沒有顯示他到目前爲止嘗試過的東西的真正問題」。但我不會投票表決,因爲OP只是爲了尋找正則表達式來解決這個問題而走錯了方向。 –

+0

同意,我會投平倉離場,但OP應該把他試過。 –

回答

1
string Date = "December 8" 

    MatchCollection MC = Regex.Matches(Date, @"(?i)([\d]{1,2}(\s)?(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec))|(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)(\s)?[\d]{1,2}"); 
+0

完美工作..感謝兄弟.. –

6

爲什麼使用正則表達式時奮鬥的框架已經爲您提供了TryParseExact方法,其目的是恰恰如此:

public class Program 
{ 
    static void Main() 
    { 
     var str = "8 October"; 
     DateTime date; 
     var formats = new[] { "d MMMM", "d MMM" }; 
     if (DateTime.TryParseExact(str, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) 
     { 
      Console.WriteLine(date); 
     } 
     else 
     { 
      Console.WriteLine("The date was not in one of the 2 supported formats 'd MMMM' orr 'd MMM'"); 
     } 
    } 
} 

你甚至可以讓它的文化意識。例如,讓我們假設你有你的網站的法語用戶,可能會寫8 Octobre而不是8 October

在這種情況下,你可以指定當前區域性或強制特定文化:

var str = "8 Octobre"; 
DateTime date; 
var formats = new[] { "d MMMM", "d MMM" }; 
var ci = new CultureInfo("fr-FR"); 
if (DateTime.TryParseExact(str, formats, ci, DateTimeStyles.None, out date)) 
{ 
    // use the date instance here 
} 

延伸閱讀:custom datetime formats

+0

只是一個假設,但我認爲OP需要首先在更大的字符串中找到日期,並找到這樣的可能日期,正則表達式很好。當然,需要使用你的方法檢查「可能」日期。 – stema

1

試試這個正則表達式:

(?<month>[a-zA-Z]+)\s+(?<day>\d+)|(?<day>\d+)\s+(?<month>[a-zA-Z]+) 

,並獲得組命名爲:daymonth

1

要查找的日期在一個較大的字符串,你可以做這樣的事情:

\b(?:\d{1,2}\s(?:Jan|Feb|Sep|Oct)(?:[a-z]+\b)?|(?:Jan|Feb|Sep|Oct)(?:[a-z]+\b)?\s\d{1,2})\b 

一起與選項IgnoreCase

而且然後你需要完成的縮寫列表中的方法Darin Dimitrov provided

當然測試得到的字符串。我只添加了一些測試。

看到它here on Regexr

1

如果一定要使用正則表達式嘗試這種

((?<Day>\d\d?) (?<Month>[A-Z][a-z]+))|((?<Month>[A-Z][a-z]+) (?<Day>\d\d?))