Вместе с моей командой мы используем приведенный ниже шаблон регулярного выражения для описания верхнего регистра верблюда, который соответствует нашим потребностям. Довольно простой - много похожих мы можем найти в inte rnet.
^[A-Z]+(?:[A-Z]*[A-Za-z0-9]+)*$
Мы хотели бы улучшить его, добавив в это выражение черный список. Мы можем разделить эти записи черного списка на две категории:
- Слова, которые не могут быть в начале строки (например, «Bool», потому что вместо этого мы должны использовать «Flag»)
- Слова, которые не могут быть в конце или в середине строки (например, «Флаг», «Путь», «URL», «Счетчик», потому что это префиксы, и они должны быть в начале)
Конечно, мы должны использовать подход черного списка вместо белого, потому что слов, которые могут быть запрещены, намного меньше, чем разрешенных, и не все строки должны начинаться с префикса)
Я был бы очень благодарен, если кто-то может помогите мне реализовать этот черный список в нашем существующем шаблоне регулярного выражения.
С уважением, Томек
@ Редактировать: Я думаю, что я неправильно объяснил свою идею черного списка. Я имел в виду, что эти выражения, упомянутые в черном списке, НЕ должны совпадать - они должны быть автоматически исключены.
@ Edit1: Для сопоставления случаев (правильно)
FlagDataExist
PathInputFile
UrlLoggingPage
OtherCamelCase
VarValue
IntValue
CounterValue
НЕ быть совпадающие случаи (неверно):
BoolDataExist
(черный список №1 верен) InputFilePath
(черный список №2 верен) LoggingUrlPage
(черный список № 2 верен) otherCamelCase
(потому что это нижний регистр верблюда) varValue
(потому что это нижний регистр верблюда) intValue
(потому что это нижний корпус верблюда) counterValue
(потому что это нижний корпус верблюда)