我正在寻找如何更改花哨的引号的方法:"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
我希望正则表达式能够匹配第一个和第三个引号并更改它们。它确实如此。问题是:我希望然后再次匹配第 2 和第 4,但它不会,因为第 2 已经落后了。一种解决方案是再次运行相同的替换,直到其中的引号字符少于 2 个。
有没有更好的方法来实现我的目标?当会有第三层嵌套时,我的方法将不起作用,这不是我的目标,我保留 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»