派手なものの引用符を変更する方法を探しています: "abc"
-> «abc»
.
それは単純な状況で私のために機能し、私が探している次のステップは、ネストされた引用符でも機能させる方法です: "abc "d e f" ghi"
->«abc «d e f» ghi»
$pk =~ s/
"( # first qoute, start capture
[\p{Word}\.]+? # at least one word-char or point
.*?\b[\.,?!]*? # any char followed boundary + opt. punctuation
)" # stop capture, ending quote
/«$1»/xg; # change to fancy
正規表現が1番目と3番目の引用に一致し、それらを変更することを望みました。そして、そうです。問題は次のとおりです。2 番目と 4 番目が再び一致することを望んでいましたが、2 番目がすでに取り残されているため、一致しません。1 つの解決策は、引用文字が 2 未満になるまで同じ置換を再度実行することです。
私の目標を達成するためのより良い方法はありますか? 3 番目のレベルのネストがある場合、私のアプローチは機能しません。これは私の目標ではありません。2 レベルのままです。
注意!startquote と enquote を別々の置換で変更すると、単一の二重引用符も置換されるため、機能しません。カップルで登場する時だけ交換すればいいのに!
その他の例:
"abc "d e f" -> «abc "d e f»
"abc"d e f" -> «abc"d e f»
これは不可能に思えます:
"abc" d e f" -> «abc" d e f»