Регулярное выражение соответствующая строка не начинается с моего
для PMD я хотел бы иметь правило, которое предупреждает меня о тех уродливых переменных, которые начинаются с моего. Это означает, что я должен принять все переменные, которые не начинаются с моего.
Итак, мне нужно регулярное выражение (re), которое ведет себя следующим образом:
re.match('myVar') == false
re.match('manager') == true
re.match('thisIsMyVar') == true
re.match('myOtherVar') == false
re.match('stuff') == true
Я пробовал разные (перечислю их здесь позже, извините, нет доступа к ним прямо сейчас), но еще не заработал.
4 ответа:
вы можете либо использовать lookahead утверждение, как другие предложили. Или, если вы просто хотите использовать основной синтаксис регулярного выражения:
^(.?$|[^m].+|m[^y].*)
это соответствует строке, либо ноль или один символ длиннее (
^.?$
) и таким образом не может бытьmy
. Или строки с двумя или более символами, где, когда первый символ не являетсяm
любые другие символы могут следовать (^[^m].+
); или если первый символm
не следуетy
(^m[^y]
).
^(?!my)\w+$
должны работать.
это первая гарантирует, что это не возможно, чтобы соответствовать
my
в начале строки, а затем соответствует буквенно-цифровым символам до конца строки. Пробелы в любом месте строки вызовут сбой регулярного выражения. В зависимости от вашего ввода вы можете либо удалить пробелы в передней и задней части строки перед ее передачей в регулярное выражение, либо использовать дополнительные сопоставители пробелов в регулярное выражение, например^\s*(?!my)(\w+)\s*$
. В этом деле, ссылка 1 будет содержать имя переменной.и если вам нужно убедиться, что ваше имя переменной начинается с определенной группы символов, скажите
[A-Za-z_]
используйте^(?!my)[A-Za-z_]\w*$
обратите внимание на изменение с
+
до*
.