Regex переменной длины заглянуть в подстановочный знак - PullRequest
1 голос
/ 11 апреля 2019

У меня есть строки в виде

[Identifier][Keyword][Number]Text

Где идентификатор - \w*, ключевое слово - одно из Button, Link или Text, число - [0-9]*, а текст - буквальное слово Text. Я пытаюсь сопоставить строки, которые не соответствуют этому шаблону.

Примеры, которые я бы хотел подобрать:

  • MyIdentifier
  • MyIdentifierText
  • MyIdentifierButton
  • MyIdentifierButton1
  • Кнопка
  • Button1
  • Текст

Примеры, которые я не хочу подбирать:

  • ButtonText
  • MyIdentifierButtonText
  • Button1Text
  • MyIdentifierButton1Text
  • TextText
  • Text1Text

Я придумал это:

^\w*(?:(?<!Button)|(?<!Link)|(?<!Text))[0-9]*(?<!Text)$

Это верно, за исключением того, что оно не соответствует следующему:

  • Текст
  • MyIdentifierText

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

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