10

是否可以只使用正则表达式将“hello_world”之类的字符串转换为“HelloWorld”并返回?

我之所以问,是因为我经常需要为 Sublime Text 创建片段,当我在其他地方键入“ClassName”时,它会自动在某处填写“class_name”。为此,我只能使用perl 风格的正则表达式。

4

1 回答 1

17

使用 perl 正则表达式:

你好世界 -> 你好世界

s/(_|\b)([a-z])/\u\2/g;
  • \b:在边界匹配(空格、字符串开头、标点符号、..)
  • [a-z]: 小写字母
  • \u: 为下一个字符设置大写
  • \2: 第 2 组(第一个小写字符)
  • (_|\b)-> 第一组
  • ([a-z])-> 组2

HelloWorld -> hello_world

s/([A-Z][a-z]+|[a-z]+)([A-Z])/\l\1_\l\2/g;
  • 不适用于Hello.
  • 如果可以使用两个替换,请使用s/([A-Z])/_\l\1/g;后跟s/^_//;
于 2013-06-26T11:10:45.667 回答