我正在尝试使用Notepad ++宏进行一些文本操作.我的最后一步是将camelCase字符串转换为SNAKE_CASE.到目前为止没有运气.我对正则表达式不太熟悉,所以无法编写自己的解决方案.
示例文本文件输入:
firstLine(874),
secondLine(15),
thirdLineOfText87(0x0001);
Run Code Online (Sandbox Code Playgroud)
期望的输出:
FIRST_LINE(874),
SECOND_LINE(15),
THIRD_LINE_OF_TEXT_87(0x0001);
Run Code Online (Sandbox Code Playgroud)
正则表达式或任何插件是一个可接受的答案.
Wik*_*żew 10
我建议采用以下正则表达式方法:
查找内容: (\b[a-z]+|\G(?!^))((?:[A-Z]|\d+)[a-z]*)
替换为:\U\1_\2
匹配大小写:开.
这将把camelCase87LikeThis话转向CAMEL_CASE_87_LIKE_THIS.如果您需要为以大写字母开头的骆驼字添加支持,请使用以下正则表达式修改:
(\G(?!^)|\b[a-zA-Z][a-z]*)([A-Z][a-z]*|\d+)
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示(也在Notepad ++中测试).注意\G正则表达式内部的位置并添加A-Z.
细节:
(\b[a-z]+|\G(?!^)) - 第1组捕获两种替代方案中的任何一种:
\b[a-z]+- 开始一个单词(\b这里是初始单词边界),后跟1个小写ASCII字母|- 要么\G(?!^) - 上一次成功比赛的结束位置((?:[A-Z]|\d+)[a-z]*) - 第2组捕获:
(?:[A-Z]|\d+)- 大写ASCII字母([A-Z])或(|)1+位数(\d+)[a-z]* - 0+小写ASCII字母.在\U\1_\2替换模式接通所有的字符与为大写\U并插入_两组(插入之间\1和\2反向引用).
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |