Можно ли использовать регулярные выражения для привязки/подчеркивания строк?

Можно ли использовать только обычные выражения для преобразования строк, таких как "hello_world" в "HelloWorld" и обратно?

Я спрашиваю, потому что мне часто нужно создавать фрагменты для Sublime Text, которые автоматически заполняют "class_name" где-то, когда я набираю "ClassName" где-то в другом месте. Для этой цели я могу использовать регулярные выражения в стиле perl.

Ответ 1

Использование регулярного выражения perl:

hello_world → HelloWorld

s/(_|\b)([a-z])/\u\2/g;
  • \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;
  • Не работает для Hello.
  • Если вы можете использовать две подстановки, используйте s/([A-Z])/_\l\1/g;, за которым следует s/^_//;