регулярное выражение не должно начинаться с ‘the’ или заканчиваться ‘form’.Ввод может содержать ключевое слово «the» или заканчиваться на «form»

#regex

#регулярное выражение

Вопрос:

регулярное выражение не должно начинаться с ‘the’ или заканчиваться ‘form’.Ввод может содержать ключевое слово «the» или заканчиваться на «form», некоторые входные данные могут содержать оба или форма отсутствует.

например:

 the test3211 form - not valid
the test22 - not valid
test34 - valid
test55 form - not valid
 

До сих пор я пробовал регулярное выражение: ^the.*form$

Комментарии:

1. Пожалуйста, укажите, на каком языке вы ищете регулярное выражение? Также, пожалуйста, добавьте свои усилия в виде кода в свой вопрос, что настоятельно рекомендуется на SO, спасибо.

2. @Hetal Thaker Да. должны встречаться либо «the», либо «form», либо нет.

Ответ №1:

Вы можете попробовать

 ^(?=the.*form$|(?!the|.*form$)).*$
 
  • ^(?=...) позитивный взгляд в будущее, проверка формы в начале
  • the.*form$ либо строка начинается с the и заканчивается form
  • |(?!the|.*form) или строка не начинается и the не заканчивается form

Смотрите Доказательство


Редактировать

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

 ^(?!the|.*form$).*$
 
  • (?!the|.*form$) строка не должна ни начинаться, the ни заканчиваться form

Проверьте доказательство

Комментарии:

1. форма test55 — сбой, фонд — сбой

2. Разве не test55 form предполагается, что оно не должно проходить? Или вы имеете в виду test55 form - failed the fund ? Оно не начинается the и не заканчивается, form поэтому оно должно пройти? Я в замешательстве

3. из моего вопроса допустим только test34. смотрите мой пример из вопроса.

4. Но вы также указаны the test3211 form - valid как действительные

5. о, я просто обновляю example..it это была моя ошибка.

Ответ №2:

Вам понадобятся привязки и поисковые решения:

 ^(?!theb)(?!.*bform$). $
 

Смотрите демонстрацию на regex101.com .

Ответ №3:

Предполагая, что я правильно понял ваш вопрос.

  • Строка не может начинаться с ‘the’ или заканчиваться ‘form’
  • Строка может содержать «the» или «form» внутри строки

После некоторого быстрого тестирования я пришел к следующему:

 ^(?!the).*(?<!form)$
 

По сути, при этом используется отрицательный прогноз, чтобы исключить любую строку, начинающуюся с ‘the’
Затем он сопоставляет любое количество символов, пока, наконец, не использует отрицательный взгляд назад, чтобы исключить любую строку, заканчивающуюся на ‘form’

Все эти концепции объясняются в https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Regular_expression

Также проверьте regex101.com для тестирования ваших регулярных выражений.