-3

重複の可能性:
python 正規表現、日付形式

「6月27日」のようなすべての日付を見つけるための正規表現を書いています

同時に、2012年の「6月27日」だけが必要ですが、他の年は必要ありません

したがって、「2007 年 6 月 27 日」の「6 月 27 日」は見つからないはずですが、正規表現は「6 月 27 日」をキャッチします。

正規表現は次のように記述されます。

((?<!\w)(january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)[\.]?\s{1,3}?((?<!(\d|:))(1[0-9]|2[0-9]|3[0-1]|0?[1-9])(st|nd|rd|th)?(?!(\d|\s{0,3}am|s\{0,3}pm|:)))(\s{0,2},?\s{0,2}(2012))?(?!(\d|\s{0,4},?\s{0,2}(1\d\d\d|200\d|2010|2011))))

「27th」の「th」を削除すると、正規表現が機能します。つまり、日付文字列が捕捉されません。

誰でも助けることができますか?

4

1 に答える 1

0

すべての日付が指定された構文であると仮定すると、簡単な正規表現は次のようになります。

/^([^\d\s]+?)\s*(\d+)[stndrh]+,\s*2012$/

最初のキャプチャ グループは月を言語または省略形でキャプチャし、2 番目のキャプチャ グループは月の日を保持します。

または、長いテキスト内ですべてを一致させる必要がある場合は、次のようにしてみてください。

/(?:([a-z]{3,9})\s*(\d{1,2})[stndrh]{2},\s*2012)/

同じキャプチャですが、正規表現はより制限的であるため、誤って不要な結果と一致することはありません。

于 2012-08-14T12:26:06.800 に答える