Ruby Regexp中的括号/ Parens

时间:2012-02-07 03:25:37

标签: ruby regex

我收到警告并收到错误:

rubytime.rb:18: warning: character class has `[' without escape
rubytime.rb:18: unmatched ): /^(\w+).*\([([\d]+)\+]?(\d\d):(\d\d)\)\s*$/

这一行:

if line =~ /^(\w+).*\([([\d]+)\+]?(\d\d):(\d\d)\)\s*$/

我已经检查了几次并且parens /括号似乎排成一行,尽管可能(最近做过perl)我在Ruby中对Regexp做出了错误的假设。

2 个答案:

答案 0 :(得分:2)

[([\d]+)\+]?

你的意思是......

(([\d]+)\+)?

此外,[\d]相当于\d,所以你真的可以把它写成...... {/ p>

((\d+)\+)?

如果您不希望外部组成为匹配组,则可以使用不匹配的(?: )

(?:(\d+)\+)?

答案 1 :(得分:0)

如果你需要文字括号,你需要逃避它们。 \[ \]。未转义的括号会启动一个“字符类”,例如[abc],它接受​​abc。这些不能嵌套。