どういうわけか、ゼロ幅の負の後読みアサーション - 一致しない ") の前に \ - がある場合、意図したとおりに機能しません。
これは私が今持っているものです:
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\")"]]
最後の試合は間違っています。