表達我除了使用正則表達式庫在C#中,即得與模式匹配的表情在網上搜索沒有正則表達式的知識。定期匹配日期
我想有正則表達式在符合以下兩個所述格式,無需年部分日期。
8 October
或8 Oct
September 19
或Sep 19
請幫我,搜索谷歌並沒有幫助我。
表達我除了使用正則表達式庫在C#中,即得與模式匹配的表情在網上搜索沒有正則表達式的知識。定期匹配日期
我想有正則表達式在符合以下兩個所述格式,無需年部分日期。
8 October
或8 Oct
September 19
或Sep 19
請幫我,搜索谷歌並沒有幫助我。
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}");
完美工作..感謝兄弟.. –
爲什麼使用正則表達式時奮鬥的框架已經爲您提供了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。
只是一個假設,但我認爲OP需要首先在更大的字符串中找到日期,並找到這樣的可能日期,正則表達式很好。當然,需要使用你的方法檢查「可能」日期。 – stema
試試這個正則表達式:
(?<month>[a-zA-Z]+)\s+(?<day>\d+)|(?<day>\d+)\s+(?<month>[a-zA-Z]+)
,並獲得組命名爲:day
和month
要查找的日期在一個較大的字符串,你可以做這樣的事情:
\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
當然測試得到的字符串。我只添加了一些測試。
如果一定要使用正則表達式嘗試這種
((?<Day>\d\d?) (?<Month>[A-Z][a-z]+))|((?<Month>[A-Z][a-z]+) (?<Day>\d\d?))
爲什麼這個問題投票決定關閉爲'太localized'?這對我來說似乎是一個完全正確的問題。這個問題可能被投票結束的唯一正當理由是「對於缺乏來自OP的研究並沒有顯示他到目前爲止嘗試過的東西的真正問題」。但我不會投票表決,因爲OP只是爲了尋找正則表達式來解決這個問題而走錯了方向。 –
同意,我會投平倉離場,但OP應該把他試過。 –