我正在尝试纠正一些OCR错误,我需要将''
(双尖)替换为"
(引号)。我正在使用Subtitledit(我认为它使用C#正则表达式)。
我需要每次都匹配''
,但在这种情况下不需要匹配:
some text 'undefined length phrase/phrases''
第一个'
前应有一个空格,后跟一个\w
。
基本上,我想匹配''
,如果前面没有\s'\w.*
。
在此示例中:
''E poi disse: 'Ne voglio un po'', ed andò via.''
我要匹配第一个''
和最后一个'Ne voglio un po
,但不要匹配中间的那个,因为它的前面是<Field name="foo" component="input" type="checkbox" />
<OnChange name="foo">
{(value, previous) => {
// do something
}}
</OnChange>
。
我尝试了this,但由于在后视内部无法使用量词,因此无法正常工作。
答案 0 :(得分:1)
您可以将它们作为分隔符进行匹配。
在您的情况下,您要与''
匹配为2个分隔符。
这是这样做的
找到('')((?:(?:(?!''|'[^']*'')[\S\s])*(?:'[^']*'')?)*)('')
替换"$2"
https://regex101.com/r/Ii0aPe/1
_______________________________________
如果上述方法不适合您,则可以删除第一个('')
并运行
它。
更新-另外,将中间部分添加到末尾以使对称性覆盖
结束条件。
请注意以下警告:仅包含'Ne voglio un po''
的字符串
将会转换为'Ne voglio un po"
。
当您不执行平衡定界符时,就会发生这种情况。
查找:((?:(?:(?!''|'[^']*'')[\S\s])*(?:'[^']*'')?)*)('')((?:(?:(?!''|'[^']*'')[\S\s])*(?:'[^']*'')?)*)
替换:$1"$3
https://regex101.com/r/KTYhmq/1
扩展
( # (1 start)
(?:
(?:
(?! '' | ' [^']* '' )
[\S\s]
)*
(?: ' [^']* '' )?
)*
) # (1 end)
( '' ) # (2)
( # (3 start)
(?:
(?:
(?! '' | ' [^']* '' )
[\S\s]
)*
(?: ' [^']* '' )?
)*
) # (3 end)
答案 1 :(得分:0)
这个表达式非常有趣,我们将添加一个右侧边界,并且我们可能会以如下表达式开始:
\s'.+?\w'[^']
如果我们还有其他实例,我们肯定可以在表达式上加上其他约束,例如:
\s'[^']+?\w'[^']
或
\s'\w[^']+?\w'[^']
答案 2 :(得分:0)