如何更简洁地编写这些正则表达式?

时间:2012-04-13 23:13:55

标签: regex

我可以以某种方式组合这些正则表达式吗?:

        _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 个答案:

答案 0 :(得分:2)

\d+(?:st|th|nd|rd) Fl(?:r|oor)?$
  • 至少匹配一个或多个数字,而不是零数字(这可能是原文中的缺点)
  • 不要忘记st
  • 匹配FlFloorFlr
  • 使用非捕获组(?:而不是捕获组
  • 假设perl兼容正则表达式

答案 1 :(得分:1)

[0-9]*(st|th|nd|rd) (Fl|Floor)$ 

应具有相同的效果。使用|运算符,您实际上说您想要其中一种可能性。

[假设_regexes.Add(new Regex("[0-9]*rd Flr$")); - r是拼写错误]是吗?