一般に、この問題に対する一般的な解決策に出くわしたとは思いません。範囲または単一の値である可能性がある文字列をどのように照合しますか?
[複雑な] 日付に一致させたいとします。
- 1999 - 2010
- 紀元前323年~紀元100年
- 紀元前323年
- 1995-99
- 紀元前323年 - 紀元前322年
これらの両方のケースを解析できる一般的な正規表現「テンプレート」は何ですか:
- 存在する場合は開始日/終了日
- それ以外の場合は、単一の日付のみ
「1999 - 2010」に一致させるには、次のようにします
/(\d+\s*)-(\s*\d+)/ // where $1 and $2 are start and end
より複雑な「紀元前 323 年 - 紀元 100 年」に合わせるには、次のようにします。
/(\w+\s*\w+)\s*-\s*(\w+\s*\w+)/
そして、より単純な「323 BC」に合わせて、次のことができます
/\w+\s*\w+/
しかし、最初に範囲(323 BCE - 100 CE) をチェックし、それが存在しない場合は単一の値 (323 BC) をチェックし、上記のリストの他の例も処理できる1 つの式をどのように記述しますか? ?