1

C# で正規表現ライブラリを使用する以外に、正規表現についての知識はありません。これも、ネットから検索されたパターン マッチング式を使用します。

以下の 2 つの形式で日付と一致するように正規表現を使用したいと思います。年の部分は必要ありません。

  1. 8 Octoberまた8 Oct

  2. September 19またSep 19

Google を検索しても解決しませんでした。

4

5 に答える 5

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
}

詳細情報:カスタムの日時形式

于 2012-10-09T09:16:30.387 に答える
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}");
于 2012-10-09T09:28:22.997 に答える
1

正規表現を使用する必要がある場合は、これを試してください

((?<Day>\d\d?) (?<Month>[A-Z][a-z]+))|((?<Month>[A-Z][a-z]+) (?<Day>\d\d?))
于 2012-10-09T09:21:04.487 に答える
1

この正規表現を試してください:

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

および次の名前のグループを取得します:dayおよびmonth

于 2012-10-09T09:16:56.907 に答える
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 が提供するメソッドでテストします

もちろん、略語のリストを完成させる必要があります。テスト用に一部だけ追加しました。

ここでRegexrを参照してください

于 2012-10-09T09:20:33.027 に答える