Соответствующая строка RegExp, не запускающаяся с моего

Для PMD я хотел бы иметь правило, которое предупреждает меня о тех ужасных переменных, которые запускаются с моего. Это означает, что я должен принять все переменные, которые НЕ запускаются с моего.

Так, мне нужен RegEx (ре), которое ведет себя следующим образом:

re.match('myVar')       == false
re.match('manager')     == true
re.match('thisIsMyVar') == true
re.match('myOtherVar')  == false
re.match('stuff')       == true

Я попробовал различные (перечислит их здесь позже, извините, никакой доступ к ним прямо сейчас), но не имейте его еще работающий.

76
задан Dominik Sandjaja 22 January 2010 в 09:44
поделиться

3 ответа

Вы могли бы использовать утверждение, как предлагали другие. Или, если вы просто хотите использовать основной синтаксис регулярного выражения:

^(.?$|[^m].+|m[^y].*)

Это соответствует строкам, которые либо равны нулю, либо состоят из одного символа (^...$) и, таким образом, не могут быть my. Или строки с двумя или более символами, когда первый символ не является m, могут следовать (^[^m].+); или если первый символ является m, за ним не должен следовать y (^m[^y]).

35
ответ дан 24 November 2019 в 11:06
поделиться
^(?!my)\w+$

должен работать.

Сначала он обеспечивает невозможность совпадения my в начале строки, а затем совпадает с буквенно-цифровыми символами до конца строки. Пробельные символы в любом месте строки приведут к ошибке регекса. В зависимости от вашего ввода, вы можете либо удалить пробельные символы в начале и в конце строки перед передачей их в регекс, либо использовать опциональные матчи пробельных символов в регекс типа ^\s*(?!my)(\w+)\s*$. В этом случае обратная ссылка 1 будет содержать имя переменной.

И если вам нужно убедиться, что имя переменной начинается с определенной группы символов, скажем [A-Za-z_], используйте

^(?!my)[A-Za-z_]\w*$

Обратите внимание на изменение с + на *.

143
ответ дан 24 November 2019 в 11:06
поделиться
/^(?!my).*/

(?! Выражение) - отрицательный вид; Он соответствует положению, где выражение не совпадает со значением , начиная с этой позиции.

51
ответ дан 24 November 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: