如何用Notepad++正则表达式实现除单引号内文本外全部转小写?
解决Notepad++中SQL转小写但保留单引号内大小写的问题
需求说明
现有SQL代码:
WITH my_data as (SELECT 'XX_abc_123' label from DUAL UNION ALL SELECT 'XX_SWU_541324_FFF' from DUAL) SELECT label from MY_DATA;
需要实现:将单引号以外的所有文本转为小写,同时保留单引号内文本的原有大小写,最终得到:
with my_data as (select 'XX_abc_123' label from dual union all select 'XX_SWU_541324_FFF' from dual) select label from my_data;
之前尝试的问题
你之前用的查找规则([a-z])+替换规则\L$1\E逻辑有误,且会把单引号内的内容也一并转小写,不符合需求。
正确实现步骤
在Notepad++中通过正则替换即可完成,操作如下:
- 按下
Ctrl+H打开替换窗口 - 「查找模式」选择「正则表达式」,勾选「匹配大小写」和「.匹配换行符」
- 查找内容输入:
('.*?')|([A-Z])- 该规则会匹配两种内容:一是单引号包裹的完整文本(非贪婪匹配,避免跨引号匹配),二是引号外的所有大写字母
- 替换为输入:
\1\L\2\E\1保留单引号内的原内容;\L\2\E将匹配到的大写字母转为小写
- 点击「全部替换」即可得到目标效果
内容的提问来源于stack exchange,提问作者4532066
相关产品推荐
相关产品推荐

