通常我们在使用正则进行查找替换的时候,我们的模式匹配符一般都是写在模式匹配项目里面,结果是直接将匹配到的整个项替换为我们指定的项,而在正则表达式中,我们还可以将以下的模式匹配项放在替换的表达式里面。 我们的批量查找转换替换 就是将我们的转换符放到替换表达式里面进行的。
可用于正则替换表达式中的大小写模式转换符:
对匹配到的第一个字符进行大小写转换
\l 将匹配项的第一个字符更改为小写,例如: ABC 变成 aBC
\u 将匹配项的第一个字符更改为大写,例如: abc 变成 Abc
对匹配到的整个字符进行大小写转换
\L 将匹配项字符更改为小写,直到字符串的末尾,例如: BAR 变成 bar
\U 将匹配项字符更改为大写,直到字符串的末尾,例如: bar 变成 BAR
\E 终止转换(End)
使用示例
1. 大驼峰转蛇形或者串式 命名
我们通过正则将大小写字母分别捕获,然后利用 \L将捕获的大写转为小写即可。 蛇形或者串式命名的差别就是 _ - 的区别,这个在替换表达式里面自己自由组合即可
如有字符串: SysUser SysNotice 要将他们转换为串式命名
正则查询表达式:^([A-Z]{1})([a-z]+)([A-Z]{1})([a-z]+)$
正则替换表达式:串式 \L$1$2-\L$3$4 蛇形 \L$1$2_\L$3$4
也可以使用 \l 模式转换符 如 \l$1$2_\l$3$4 因为这里的$1,$3都只匹配了1个字符。
执行后的结果为 sys_user sys_notice
说明: 正则查询表达式中的 ^字符串的开始修饰符,$字符串结尾修饰符, ([A-Z]{1}) 只匹配一个大写字母, ([a-z]+) 匹配1个或者多个小写字母, 我们通过这个组合就可以匹配如 Sys 这样的字符串。 正则替换表达式中的 \L$1 这个就是将上面的查询表达式中的第一个组中的内容转换为小写,对应的查询表达式为 ([A-Z]{1}) , 这里的 $2 表示的是第二个分组,对应的查询表达式为 ([a-z]+) ,后面的$3, $4依次类推......
2. 蛇形或者串式转大驼峰命名
这里就不做说明了,原理和上面一样
将字符串 sys_user sys_notice 转换为 SysUser SysNotice
查询表达式: ^([a-z]{1})([a-z]+)_([a-z]{1})([a-z]+)$
替换表达式:\u$1$2_\u$3$4
3. 大驼峰转小驼峰
这个相对较为简单,我们只需要在替换表达式里面使用 \l 将捕获到的字符串的第一个字符转换为小写即可
字符串: SysUser SysNotice 要将他们转换为小驼峰
正则查询表达式:^([A-Za-z]+)$
正则替换表达式:\l$1
执行后的结果为 sysUser sysNotice
总结:
正则表达式的模式转换符号给我们批量查找和转换大小写提供了非常方便的方式, 我们只需要将查找的字符根据我们需要转换的最终字符进行拆分后,在利用替换中的模式转换符号灵活应用,即可实现批量对字符串的大小写进行查找和转换。 这里的模式转换符号是应用在替换表达式里面的, \l \u是转换捕获到的第一个字符, 而 \L \U 则是转换捕获到的整个字符串。 当然上面的二正则替换模式转换符在 我们的主流编辑器,如vscode, idea, sublime等里面都是可用的。