我收到警告并收到错误:
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做出了错误的假设。
答案 0 :(得分:2)
[([\d]+)\+]?
你的意思是......
(([\d]+)\+)?
此外,[\d]
相当于\d
,所以你真的可以把它写成...... {/ p>
((\d+)\+)?
如果您不希望外部组成为匹配组,则可以使用不匹配的(?: )
:
(?:(\d+)\+)?
答案 1 :(得分:0)
如果你需要文字括号,你需要逃避它们。 \[ \]
。未转义的括号会启动一个“字符类”,例如[abc]
,它接受a
或b
或c
。这些不能嵌套。