需要正则表达式帮助或替代

时间:2014-02-13 14:05:34

标签: regex

正如问题所说,我需要有正则表达式或替代方案的帮助。

我的字符串如下所示;

"House.Rooms(3).Kitchen(1)"
"House.Kitchen("20.20 feet").Rooms(3).Wc(1)"

我需要的是一个可以匹配上面字符串的正则表达式模式。将字符串视为编程语法。

所以上面的字符串是有效的,但不是:House .Kitchen("20.20 feet"). Rooms(3). Wc(1)。 空格仅允许在双引号或单引号内。

目前我有以下正则表达式模式/@[0-9a-zA-Z._(,)@]+/,但这与其中包含空格的字符串或在正则表达式中未定义的任何其他字符不匹配。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这应该匹配字符串。我没有制作任何捕获组,因为您只指定要匹配字符串,而不是捕获任何内容。

^(?:\w+(?:\((?:\d+|".*?")\))?(?:\.|$))+$

“爆炸”版本,更易于阅读:

^               # Start of line
  (?:             # Start of group used for repeating
    \w+             # Valid strings (House, Rooms, Kitchen etc.)
    (?:             # Start of optional group containing parenthesis and parameters
      \(              # Literal open parenthesis
      (?:             # Start of group containing parameters
        \d+             # Numbers
        |               # or
        ".*?"           # String/stuff inside quotes
      )               # End of parameter group
      \)              # Literal close parenthesis
    )?              # End of optional group containing parenthesis and parameters
    (?:             # Start of group requiring string to end with a dot or EOL
      \.              # Literal dot
      |               # or
      $               # Must be EOL
    )               # End of group requiring string to end with dot or EOL
  )+              # End of group (repeat 1 or more times)
$               # EOL

Live version