是否可以只使用正则表达式将“hello_world”之类的字符串转换为“HelloWorld”并返回?
我之所以问,是因为我经常需要为 Sublime Text 创建片段,当我在其他地方键入“ClassName”时,它会自动在某处填写“class_name”。为此,我只能使用perl 风格的正则表达式。
是否可以只使用正则表达式将“hello_world”之类的字符串转换为“HelloWorld”并返回?
我之所以问,是因为我经常需要为 Sublime Text 创建片段,当我在其他地方键入“ClassName”时,它会自动在某处填写“class_name”。为此,我只能使用perl 风格的正则表达式。
使用 perl 正则表达式:
你好世界 -> 你好世界
s/(_|\b)([a-z])/\u\2/g;
\b
:在边界匹配(空格、字符串开头、标点符号、..)[a-z]
: 小写字母\u
: 为下一个字符设置大写\2
: 第 2 组(第一个小写字符)(_|\b)
-> 第一组([a-z])
-> 组2HelloWorld -> hello_world
s/([A-Z][a-z]+|[a-z]+)([A-Z])/\l\1_\l\2/g;
Hello
.s/([A-Z])/_\l\1/g;
后跟s/^_//;