我希望将EMPTY单引号内的每个空格替换为CHR(32)的相同数字。
条件:REGEX必须仅匹配此案例 - 不适用于带单引号之间符号的情况!
重要提示:构造,在每种情况下,将在以下情况下替换之间的空格:
\|\|\s*'
并结束(在每种情况下)(根据第1 + 2行):
'\s*\|\|
我用于搜索模式:
'(\s)+'
并替换:
CHR\(32\)
但是,这只替换了 ONE CHR(32)的所有空格!
以下示例:
vpl_text := to_char(vpl_text_old) || ' ' ||...;
vpl_text := to_char(vpl_text_old) || '' ||...;
(3)' WHERE a.object_type IN (' 'TABLE'', ''MATerialIZED VIE3W' ') '
(4) WHERE a.object_type IN (' 'TABLE'', ''MATerialIZED VIE3W' ')
我的不完整结果:
vpl_text := to_char(vpl_text_old) || CHR(32) ||...;
vpl_text := to_char(vpl_text_old) || '' ||...;
(3)' WHERE a.object_type IN (CHR(32)TABLE'', ''MATerialIZED VIE3WCHR(32)) '
(4) WHERE a.object_type IN (CHR(32)TABLE'', ''MATerialIZED VIE3WCHR(32))
目标结果:
vpl_text := to_char(vpl_text_old) || CHR(32) || CHR(32) || CHR(32) || CHR(32) ||...;
vpl_text := to_char(vpl_text_old) || '' ||...;
(3)' WHERE a.object_type IN (' 'TABLE'', ''MATerialIZED VIE3W' ') '
(4) WHERE a.object_type IN (' 'TABLE'', ''MATerialIZED VIE3W' ')
第3 + 4行必须保持不变!
(&#34;(3)&#34;和&#34;(4)&#34;不属于此构造的一部分 - 仅用于解释!)。 < / p>
此主题是作为替代方案的原因: replace characters in notepad++ BUT exclude characters inside single quotation marks(4th)
如何在记事本++中定义替换REGEX正确?
答案 0 :(得分:3)
您可以使用\G anchor继续上一场比赛结束的地方。像这样:
(?:'|\G(?!^))\s(?=\s*')'?
并替换为CHR\(32\)
。请参阅test at regex101。
(?:
打开非捕获group。匹配文字'
单引号|
或:
\G(?!^)
继续前一场比赛结束。没有(?!^)
\ G也会匹配start。
\s
将空格(?=\s*')
if followed替换为任意数量的空格和另一个'
'?
结尾'
可选择维护\G
序列。
答案 1 :(得分:0)
我找到了一个解决方案(我改编了Jonny5&#39;)
(在我更改并扩展此问题之后,(对Jonny5抱歉))
搜索模式:
(?:\|\|\s*'|\G(?!^))\s(?=\s*')'?
替换模式:
\|\| CHR\(32\)