1

誰かが私にこれを説明できますか?

str = "org-id:         N/A\n"

puts str[/org-id:\s+(.+)\n/]
=> "org-id:         N/A\n"
str =~ /org-id:\s+(.+)\n/
puts $1
=> "N/A"

私が必要なのは

str =~ /org-id:\s+(.+)\n/
puts $1

一行で。しかしstr[/org-id:\s+(.+)\n/]str.slice(/org-id:\s+(.+)\n/)戻り"org-id: N/A\n"、str.scan(/org-id:\s+(.+)\n/).first は["N/A"](および配列) を返します。このすべてのマッチングの動作が異なるのはなぜですか?

4

2 に答える 2

0

マッチとキャプチャの違いです。Str [regex]は、正規表現全体に一致するフラグメント全体を返します。$ 1は、最初の()句によってキャプチャされた一致の部分のみを表します。

于 2012-05-30T23:15:28.590 に答える