1

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

「一致なし」という出力が得られます。

ただし、ルビュラーで同じパターンと文字列を使用すると、一致します。上記のコードをパターンで使用すると、すでに不規則性が発生しています。

/^\\begin/

および文字列\begin。これは上記のスニペットを使用すると一致しませんが、rubular.com では一致します

Ruby 1.9.1を使用しています

4

1 に答える 1

3

問題は入力文字列にあります。バックスペース文字があり"\b"ます。代わりに単一引用符で囲まれた文字列を使用してみてください。

string = '\begin{theorem}[blaat] \label{thm:foo}'
于 2012-04-06T11:06:22.240 に答える