-1

matchRuby でのマッチングのためにいくつかのオプションを試しましたが、 と が異なる結果をscan返すため、結果に戸惑いました。これは例です:

s ="C:\Users\rdo\AppData\Local\Temp/ccqZSpeQ.o: In function `main':\r\nmain.c:(.text+0x8): undefined reference to `some_function'"

%r[([\w\.\/]+):(.+)].match(s)
# => #<MatchData "C:Users\rdoAppDataLocalTemp/ccqZSpeQ.o: In function `main':\r" 1:"C" 2:"Users\rdoAppDataLocalTemp/ccqZSpeQ.o: In function `main':\r">

s.scan(/([\w\.\/]+):(.+)/)
# => [["C", "Users\rdoAppDataLocalTemp/ccqZSpeQ.o: In function `main':\r"], ["main.c", "(.text+0x8): undefined reference to `some_function'"]]

matchのような結果が返されると思っscanていましたが、そうではありませんでした。誰でも理由を説明できますか?

4

1 に答える 1

0

matchscanはまったく異なるメソッドであり、まったく異なることを行い、まったく異なる結果を返します。

match文字列に正規表現を適用した結果、一致したもの、それらの開始点と長さ、パターンのどのセクションが一致したかを示します。

scan文字列に正規表現を適用し、キャプチャされたすべての結果を含む文字列の配列を返します。

于 2013-02-26T03:03:50.427 に答える