将成对的引号更改为左右引号

4

tl;dr: 在OpenOffice的“查找/替换”工具中启用正则表达式,想要用智能引号(“…”) 替换常规引号("…")。

我觉得最好的方法是找到两个有任意长度、任何字符和空格的",然后将第一个替换为或者将第二个替换为。接下来,我可以替换所有"为对应的引号。

...如果分开两个正则表达式可能会更容易(对于我的大脑来说),尽管我知道某些巫师可以把它做成一个。


好了,现在你可以跳过剩下的内容了,神秘的“cerfs sarcelle”已经跳出了你的视线,留下了一堵纯文本的墙...


这是基础的东西,但我做不出来。

当我研究正则表达式时,发现有几十种编程语言可以使用它们。但我认不出其中任何一种语言,也找不到OO使用的原生语言,因此无法使用我找到的生成器进行帮助。:\

我正在编辑一个变成小说的东西,需要一些古老的印刷术。与在句点后使用双空格并在中断的语音中使用em-dash不同,这更难查找和替换。

任何帮助都将不胜感激。

如果有人能够详细说明每一步正则表达式,并说明哪个应该首先编写... 那么,我会将你列入致谢词中(如果我正在编写它的话。可惜,我不是。)

...是的,一部小说,在一个免费的文字处理器中编辑... 这将由作者自我出版,而我是无偿为他服务的,因为他是我的朋友。你怎么知道的?还有?是的,我失业了!你真是我们时代的伟大先知,观察到了可悲的显而易见的事情!:P

谢谢!


一个简单的 <空格> 搜索是否适用于开引号,而 "<空格>" 则适用于大多数闭合实例(您可能还需要 "<句号>")。 - Robert Longson
我仍然不知道OO使用哪种语言(在其正则表达式的维基文章https://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Writer中没有列出原因),但也许所有语言都会使用: - Ben
那可能是,是大部分情况。对于左引号,它需要找到空格(如空格键按下),新行,制表符等。只要没有犯错误并且在中间放置了空格,这将起作用。但我可以很容易地解决这个问题,所以没问题。但是,我也不知道如何编写它。虽然这可能解决我的问题,但我希望有人能编写如何查找两个出现次数之间的文本,并选择要替换的第二个(或第一个)。 - Ben
更新:使用类似的请求,我已经盲目地玩弄了一下,并且几乎到达了这个位置:http://regexr.com/3cf3f 查找: /(")(?:(?=(\\?))\2.)*?\1/g ...已经找到了正确的东西,但是替换: \“$&”\n\t ...保留了原始的()字符,从本质上让“…”变成了““”…””。 - Ben
1个回答

2
您替换引号的想法是可行的,只要没有嵌套引号(也就是引号内包含引号)和没有单独的引号打乱了配对。
现在来看一下(扩展的)正则表达式。
您要替换的表达式是:"(.*)"。这将搜索一对引号,并匹配两者之间的任何内容。点(.)匹配任何一个字符,星号(*)表示重复零次或多次前面的字符(在本例中是点)。括号用于捕获中间匹配到的任何内容,以便我们可以在替换模式中引用它,因此我们可以将其复制到替换中,替换应为“$1”
我使用了https://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Writer 来确定OpenOffice使用的正则表达式特定语法,但它似乎大多是标准的。

(很抱歉之前说“它不起作用”,结果我错了)这在OpenOffice中确实可以工作,只是在regexr中出了一些问题:http://regexr.com/3cf3l 非常感谢! - Ben
可能是因为\1更常用于指代一个组,而不是$1。 - hkBst
确保匹配是非贪婪的,假设没有嵌套引号。 - qwr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接