Для PMD я хотел бы иметь правило, которое предупреждает меня о тех ужасных переменных, которые запускаются с моего. Это означает, что я должен принять все переменные, которые НЕ запускаются с моего.
Так, мне нужен RegEx (ре), которое ведет себя следующим образом:
re.match('myVar') == false
re.match('manager') == true
re.match('thisIsMyVar') == true
re.match('myOtherVar') == false
re.match('stuff') == true
Я попробовал различные (перечислит их здесь позже, извините, никакой доступ к ним прямо сейчас), но не имейте его еще работающий.
Вы могли бы использовать утверждение, как предлагали другие. Или, если вы просто хотите использовать основной синтаксис регулярного выражения:
^(.?$|[^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*$
Обратите внимание на изменение с +
на *
.
/^(?!my).*/
(?! Выражение)
- отрицательный вид; Он соответствует положению, где выражение
не совпадает со значением , начиная с этой позиции.