意外的正则表达式行为

时间:2012-04-06 11:02:34

标签: ruby regex

在ruby中运行以下代码时:

string = "\begin{theorem}[blaat] \label{thm:foo}"
pattern = /^\\begin\{(theorem|definition)\}(\[.+\])?\s\\label\{(thm|def):.+\}$/
if string =~ pattern then
    puts "match"    
else
    puts "no match"
end

我得到了“不匹配”的输出。

然而,当在rubular上使用相同的模式和字符串时,我得到一个匹配。 当使用带有模式的上述代码时,已经开始出现异常:

/^\\begin/

和字符串\begin。这与使用上面的代码段不符,但它在rubular.com

我正在使用Ruby 1.9.1

1 个答案:

答案 0 :(得分:3)

问题在于您的输入字符串。您有一个退格符"\b"。请尝试使用单引号字符串:

string = '\begin{theorem}[blaat] \label{thm:foo}'