是否可以使用正则表达式来下载/下划线字符串?

Hub*_*bro 10 regex perl sublimetext

是否可以使用正则表达式将"hello_world"等字符串转换为"HelloWorld"并返回?

我问,因为我经常需要为Sublime Text创建片段,当我在其他地方键入"ClassName"时,它会自动填充"class_name".我只能为此目的使用perl风格的正则表达式.

fal*_*tru 17

使用perl正则表达式:

hello_world - > HelloWorld

s/(_|\b)([a-z])/\u\2/g;
Run Code Online (Sandbox Code Playgroud)
  • \b:边界匹配(空格,字符串开头,标点符号,..)
  • [a-z]:小写字母
  • \u:为下一个字符制作大写字母
  • \2:组2(第一个小写字符)
  • (_|\b) - >第1组
  • ([a-z]) - > group2

HelloWorld - > hello_world

s/([A-Z][a-z]+|[a-z]+)([A-Z])/\l\1_\l\2/g;
Run Code Online (Sandbox Code Playgroud)
  • 不起作用Hello.
  • 如果您可以使用两个替换,请使用s/([A-Z])/_\l\1/g;后跟s/^_//;

  • 如果您可以扩展表达式并解释所有元素,我会立即将答案标记为接受:) (2认同)