Верхний и нижний верблюжий чехол

Я пытаюсь придумать регулярное выражение для верхнего и нижнего верблюда.

Вот что я пробовал

(([A-Z][a-z0-9]*){2,}|([a-z][A-Z0-9]*){2,})

Попытка сопоставить случай с верхним верблюдом с этим - ([AZ] [a-z0-9] ) {2,}, но он также сопоставляет и другие комбинации. Похожий случай со второй частью - ([az] [A-Z0-9]) {2,})

3 ответа

Решение

Это будет соответствовать верхним и нижним фразам верблюжьего слова, содержащим в слове хотя бы один верхний регистр

Верхняя верблюжья сумка

[A-Z][a-z0-9]*[A-Z0-9][a-z0-9]+[A-Za-z0-9]*

пример:HelloWorld, AQuickBrownFox

Нижний верблюжий чехол

[a-z]+[A-Z0-9][a-z0-9]+[A-Za-z0-9]*

пример: helloWorld, aQuickBrownFox

Нижний верблюжий регистр — цифры не допускаются

      
    ^[a-z][a-z]*(([A-Z][a-z]+)*[A-Z]?|([a-z]+[A-Z])*|[A-Z])$
    

Тестовые случаи: https://regex101.com/library/4h7A1I

Нижний верблюжий регистр — разрешены цифры

      
    ^[a-z][a-z0-9]*(([A-Z][a-z0-9]+)*[A-Z]?|([a-z0-9]+[A-Z])*|[A-Z])$

Тестовые случаи: https://regex101.com/library/8nQras

Нижний верблюжий регистр — разрешены цифры — до 3 прописных букв

Чтобы соответствовать более чем одной заглавной букве (например,deviceID,serialNO,awsVPC,deviceSN) он становится немного более сложным:

       
    ^[a-z][a-z0-9]*(([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{1,3})*|[A-Z]{1,3})$

Тестовые случаи: https://regex101.com/library/C2eHyc

Pascal Case - цифры не допускаются

      
    ^[A-Z](([a-z]+[A-Z]?)*)$

Тестовые случаи: https://regex101.com/library/sF2jRZ

Pascal Case - разрешены цифры

      
    ^[A-Z](([a-z0-9]+[A-Z]?)*)$

Тестовые случаи: https://regex101.com/library/csrkQw

Pascal Case — разрешены цифры — до 3 заглавных букв

Чтобы соответствовать более чем одной заглавной букве (например,DeviceID,SerialNo,AwsVPC,IOStream,StreamIO,DeviceSN) он становится немного более сложным:

      
    ^[A-Z](([A-Z]{1,2}[a-z0-9]+)+([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{0,3})*|[A-Z]{1,2})$

Тестовые случаи: https://regex101.com/library/TLTXbK

Для получения более подробной информации о случаях верблюда и случая паскаля ознакомьтесь с этим репозиторием .

Для lowerCamelCase вам нужно:

  1. LowerCaseLetter
  2. хотя бы один (lowerCaseLetter или UpperCaseLetter или numb3r)

Таким образом, достойное выражение будет

[a-z][a-zA-Z0-9]+

Аналогично для UpperCamelCase, вы будете иметь [A-Z][a-zA-Z0-9]+и, если вы сгруппируете их, вы получите

[a-zA-Z][a-zA-Z0-9]+

Изменить: Если вы строго требуете, чтобы слово было словом верблюжьего слова, оно должно иметь "горб", где горб это заглавная буква или число, вам нужно:

  1. Заглавная или строчная буква, за которой следует
  2. Другие строчные буквы (возможно, нет), за которыми следуют
  3. Горб, сопровождаемый
  4. Другие строчные буквы (возможно, нет),
  5. Может быть, последовал еще один горб

Тогда ваше регулярное выражение:

[a-zA-Z][a-z]*([A-Z0-9]+[a-z]*)+

Регулярная скрипка

Другие вопросы по тегам