replace characters in notepad++ BUT exclude characters inside single quotation marks
很抱歉所有用户(特别是对于Avinash Raj)已经回答了第一个类似的问题 - 我确实忘记了第二种字符串。 (而且(这是令人伤心的事) - 我无法将解决方案从第一类问题调整为第二类字符串......)
我有两种不同的字符串:
SELECT column_name FROM table_name WHERE column_name IN ('A' , 'st9u' ,'Meyer', ....);
WHERE a.object_type IN (' 'TABLE'', ''MATEerialIZED VIE3W' ')
我想要将notepad ++中的所有字符从上到下替换,但是要从里面的替换字符中排除 单引号。
条件:在单引号部分之前/之后/之间不存在固体结构!
(这意味着 - 我不能使用 关键字" IN"或者#34;,"或"("或")"或";"这个正则表达式 ......!)
有一点是,单引号的两种结构是可能的: &#39; Word |数字&#39; 或 &#39;&#39; Word |数字&#39;&#39; < / EM> (但是,如第二个例子所示,每个单引号之间的空格数不同!)。
目标字符串(单引号内的字符必须保持不变):
select column_name from table_name where column_name in ('A' , 'st9u' ,'Meyer', ....);
where a.object_type in (' 'TABLE'', ''MATerialIZED VIE3W' ')
如何在notepad ++中排除单引号(替换)?
答案 0 :(得分:1)
可以合并recursive部分以获取'
... '
.... abc
''
并在之后使用\K for resetting。这是需要跳过的部分。并使用the trick种,匹配管道中的剩余单词:
'\s*(?0)?[^']*'\K|(\w+)
(?0)?
此处可以选择从开始\s
是{em>空格字符的shorthand [ \t\r\n\f]
\w
是字符的缩写 [A-Za-z0-9_]
并替换为\L\1
以降低在第一个捕获组内捕获的单词或将\U\1
降低到较高的单词。
在 NP ++ 6.7.9.2 中为我提供样本数据。 See regex101用于测试模式。