2012-04-06 8 views
1

ルビーに次のコードを実行している:予期しない正規表現の振る舞い

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:パターンで上記のコードを使用する場合 凹凸が既に開始します。これは、上記のスニペットを使用して一致していませんが、私は問題があなたの入力文字列であるRubyの1.9.1に

答えて

3

を使用していrubular.com

に行います。バックスペース文字"\b"があります。代わりに一重引用符で囲まれた文字列を使用してください:

string = '\begin{theorem}[blaat] \label{thm:foo}' 
関連する問題