【发布时间】:2014-07-23 21:14:22
【问题描述】:
我正在直接从 OCR 引擎编辑一些文本,在某些段落中,OCR 引擎会忽略开始和结束引号。我更喜欢在 HTML 模式下进行编辑,因此最终会得到一些文本,例如:
<p>&ldquo;Wait a moment,&rdquo; Jacey said. The street light lit up his aged, rat face. Who&rsquo;s on the move?&rdquo;</p>
请注意缺少的&ldquo;。
另外一句话:
<p>&ldquo;He said he&rsquo; coming afer you,&rdquo; Harry said, and he&rsquo; bringing the boys too!&rdquo;</p>
我使用这个正则表达式:([>\.\,])(.*?)&rdquo;,它似乎对第二句话起作用,但对第一句话不起作用。这是因为正则表达式是从左到右匹配的,因此匹配了不应在引号内的额外句子 The street light lit up his aged, rat face.。
我在想如果从右到左进行匹配,问题就可以解决。我知道这是 C# 中可用的一个选项,但我正在使用基于文本的编辑器的正则表达式引擎来编辑一个简单的文本文件。有没有办法只定位&ldquo;之前的最后一句,也就是Who&rsquo;s on the move?。
[编辑]
我一直在尝试使用lookbehind regex:(?<=(?:\. |, |>)(\w)(.*?))(&rdquo;),它似乎找到了所有缺少开引号的句子&ldquo;,但问题是我无法用\3&ldquo;\1\2\3替换(?<=)构造中的内容,因为lookbehind是0长度。相反,文本只是重复。例如,使用上面的正则表达式,句子Who&rsquo;s on the move?&rdquo; 变为Who&rsquo;s on the move?&rdquo;&ldquo;Who&rsquo;s on the move?&rdquo;
任何想法都会受到赞赏。 谢谢
【问题讨论】:
-
这是一个有趣的问题,因为
"quotes 'can be "nested"'"很快就会看。 -
其实你的例子很复杂!!
-
是的,但是“你'必须'允许嵌套”:)
标签: regex