-1

我尝试了几个在 Ruby 中进行匹配的选项,结果被结果弄糊涂了,因为返回的结果match不同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

match并且scan是完全不同的方法,它们做完全不同的事情并返回完全不同的结果。

match告诉您将正则表达式应用于字符串的结果、匹配的内容、它们的开始和长度以及匹配的模式部分。

scan将正则表达式应用于字符串并返回所有捕获结果的字符串数组。

于 2013-02-26T03:03:50.427 回答