Regex: Как не соответствовать последнему символу слова?

2

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

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

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

но этот тестовый пример

example:

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

exampl

вместо отказа.

Теги:

4 ответа

4
Лучший ответ

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

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

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

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

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

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

 Xeee Xrrr:Y XzzzY XfffZ

только "XyyyY"

  • 0
    Спасибо, это работает.
  • 0
    отметить как ответ
0

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

0
([a-z]+\b)(?!:)

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

0

Попробуйте следующее:

[a-z]\s
  • 0
    А как насчет слова, за которым стоит пунктуация, отличная от «:»?
  • 0
    Извините, я виноват! Я забыл это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню