2012-04-13 19 views
1

は私が何とかこれらの正規表現を組み合わせることができます?:これらの正規表現はどのようにしてより簡潔に記述できますか?

 _regexes = new List<Regex>(); 
     _regexes.Add(new Regex("[0-9]*th Fl$")); 
     _regexes.Add(new Regex("[0-9]*th Floor$")); 
     _regexes.Add(new Regex("[0-9]*st Fl$")); 
     _regexes.Add(new Regex("[0-9]*st Floor$")); 
     _regexes.Add(new Regex("[0-9]*nd Fl$")); 
     _regexes.Add(new Regex("[0-9]*nd Floor$")); 
     _regexes.Add(new Regex("[0-9]*rd Flr$")); 
     _regexes.Add(new Regex("[0-9]*rd Floor$")); 

答えて

2
\d+(?:st|th|nd|rd) Fl(?:r|oor)?$ 
  • マッチ少なくとも桁以上、ゼロでない数字st
  • マッチFlFloorまたはFlr
  • グループをキャプチャする代わりに非キャプチャグループ(?:を使用する
  • perl互換正規表現を仮定する
1
[0-9]*(st|th|nd|rd) (Fl|Floor)$ 

は、同じ効果を持っている必要があります。 |演算子を使用すると、実際には可能性の1つが欲しいと言います。

[_regexes.Add(new Regex("[0-9]*rd Flr$"));とすると、rはタイプミスですか?

  • は忘れてはいけない(おそらく元で欠点である)

  • +0

    これは間違っています。一致しません。 「1階」または「2階」。 –

    +0

    それはスペース '\ s' - >' [0-9] *(st | th | nd | rd)\ s(Fl | Floor)$ ' – Robbie

    +0

    を必要としますよね、それはタイプミスでした。 '\ s'ではなく特定の' '' 'が必要です。 [元はTABを受け付けていません] Thanks @Robbie – amit

    関連する問題