2

どういうわけか、ゼロ幅の負の後読みアサーション - 一致しない ") の前に \ - がある場合、意図したとおりに機能しません。

これは私が今持っているものです:

text = <<EOT
h1=_("This is a test")
h2=_("This is a test \"quotes\"")
h3=_("This is a test (\"quotes\")")
EOT

text.scan(/_\("(.*?)(?<!\\)"\)/)

=> [["This is a test"], ["This is a test \"quotes\""], ["This is a test (\"quotes"]]

しかし、結果は次のようになります。

=> [["This is a test"], ["This is a test \"quotes\""], ["This is a test (\"quotes\")"]]

最後の試合は間違っています。

4

1 に答える 1

1

\テキストにバックスラッシュ ( )が含まれていません

text = <<EOT
h1=_("This is a test")
h2=_("This is a test \"quotes\"")
h3=_("This is a test (\"quotes\")")
EOT
puts text

版画

h1=_("This is a test")
h2=_("This is a test "quotes"")
h3=_("This is a test ("quotes")")

バックスラッシュをエスケープするか、次の形式を使用します。

text = <<'EOT'
h1=_("This is a test")
h2=_("This is a test \"quotes\"")
h3=_("This is a test (\"quotes\")")
EOT
puts text
p text.scan(/_\("(.*?)(?<!\\)"\)/)

版画

h1=_("This is a test")
h2=_("This is a test \"quotes\"")
h3=_("This is a test (\"quotes\")")
[["This is a test"], ["This is a test \\\"quotes\\\""], ["This is a test (\\\"quotes\\\")"]]
于 2013-08-20T08:25:21.423 に答える