Снейк чехол и Чехол верблюда Соглашения о именованных переменных, функциях и классах. Большинство команд и проектов предписывают конкретное дело в их стилях.
Примеры корпуса верблюда:
MyClass MyClassFactory MyClassFactoryBuilder MyClassFactoryBuilderImpl myInstance myInstance2 abc patternMatcher
Примеры случаи змеи:
add matrix_add diagonal_matrix_add pseudo_inverse
Если мы хотим преобразовать взад-вперед между этими случаями, мы должны искать интересные точки – границы слова. Границы случая верблюда имеют первую букву, заглавную, в то время как границы слова со змеями имеют _
Отказ
Снейк чехол в корпус верблюда
Вот регулярное выражение для выяснения _
И первая буква в следующем слове:
(.*?)_([a-zA-Z])
Это Regex имеет 2 части:
(. *?)
Находит все до_
Отказ- ‘.’ означает любой характер.
- ‘*’ означает соответствие 0 или более экземпляры
- ‘? Стенды для не жадного матча. Мы должны использовать? В шаблоне, потому что двигатель Regex по умолчанию будет пытаться соответствовать максимальному соответствию. Итак, если мы используем только
(. *)
Все слово будет потребляться, и ничего не останется на остальной части шаблона. - ‘()’ ” STAGE для группы. Группа – это способ сохранения части матча на потом.
- Вместе они означают, что находят все персонажи до первого «_» и захватывают их в группе.
([A-ZA-Z])
Находит первый алфавит после_
Отказ Нам нужно это преобразовать в верхний регистр для корпуса верблюда.
Код Python ниже преобразует слова, которые находятся в корпусе змеи в корпус верблюда:
import re REG = r"(.*?)_([a-zA-Z])" def camel(match): return match.group(1) + match.group(2).upper() def camel_upper(match): return match.group(1)[0].upper() + match.group(1)[1:] + match.group(2).upper() words = """add matrix_add diagonal_matrix_add pseudo_inverse""".splitlines() results = [re.sub(REG, camel, w, 0) for w in words] print(results) # Output: # ['add', 'matrixAdd', 'diagonalMatrixAdd', 'pseudoInverse']
Мы используем Regex, которое мы построили ранее и Re.sub
метод заменить наши подобранные слова. Мы проходим метод под названием верблюд
как аргумент. Этот метод позволяет нам изменить случай буквы во второй группе и сохранить первую группу без изменений. Обратите внимание, что первое письмо может быть ниже, либо верхнее, в зависимости от того, является ли это переменную или метод (ниже) или класс (верхний). Camel_Upper
Метод можно использовать для названий классов.
Чехол верблюда к чему змеи
Аналогичным образом, для преобразования из верблюда на корпус змеи, Regex:
(.+?)([A-Z])
И код Python:
import re REG = r"(.+?)([A-Z])" def snake(match): return match.group(1).lower() + "_" + match.group(2).lower() words = """MyClass MyClassFactory MyClassFactoryBuilder MyClassFactoryBuilderImpl myInstance myInstance2 abc patternMatcher""".splitlines() results = [re.sub(REG, snake, w, 0) for w in words] print(results) # Output # ['my_class', 'my_class_factory', 'my_class_factory_builder', 'my_class_factory_builder_impl', 'my_instance', 'my_instance2', 'abc', 'pattern_matcher']
Оригинал: “https://dev.to/rrampage/snake-case-to-camel-case-and-back-using-regular-expressions-and-python-m9j”