Regex: Как не соответствовать последнему символу слова? - PullRequest
2 голосов
/ 23 октября 2009

Я пытаюсь создать регулярное выражение, которое не соответствует слову (только a-z), если слово имеет : в конце, но в противном случае соответствует ему. Однако это слово находится в середине большего регулярного выражения , и поэтому я (не думаю), что вы можете использовать отрицательный взгляд сзади и метасимвол $.

Я попробовал этот негативный взгляд:

([a-z]+)(?!:)

но этот контрольный пример

example:

просто соответствует

exampl

вместо сбоя.

Ответы [ 4 ]

4 голосов
/ 23 октября 2009

Если вы используете негативную перспективу, вы можете поставить ее в начале:

(?![a-z]*:)[a-z]+

i.e: "соответствует хотя бы одному символу a-z, за исключением случаев, когда следующие символы от 0 до n 'a-z', за которыми следует ':'"

Это поддержит большее регулярное выражение:

 X(?![a-z]*:)[a-z]+Y

будет соответствовать в следующей строке:

 Xeee Xrrr:Y XzzzY XfffZ

только 'XzzzY'

0 голосов
/ 24 октября 2009

[а-г] + (?! [: А-г])

0 голосов
/ 23 октября 2009
([a-z]+\b)(?!:)

устанавливает границу слова в конце матча и, таким образом, не может выполнить "exampl"

0 голосов
/ 23 октября 2009

Попробуйте это:

[a-z]\s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...