Регулярное выражение для исключения слова / строки

У меня есть регулярное выражение следующим образом:

^/[a-z0-9]+$

Это соответствует строки, такие как /hello или же /hello123,

Тем не менее, я хотел бы исключить пару строковых значений, таких как /ignoreme а также /ignoreme2,

Я перепробовал несколько вариантов, но не могу заставить их работать!

Моя последняя слабая попытка была

^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$

Любая помощь будет с благодарностью:-)

8 ответов

Решение

Вот еще один способ: (используя негативный прогноз):

^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$ 

Примечание: есть только одно выражение захвата: ([a-z0-9]+),

Это должно сделать это:

^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)

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

$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');

preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);

Это исключает все строки, содержащие ignoreme, из результатов поиска. Это также будет хорошо работать, когда в ряду есть любой персонаж.

      ^((?!ignoreme).)*$

Поскольку вы хотите исключить оба слова, вам нужна комбинация:

^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$

Теперь оба условия должны быть истинными (ни ignoreme, ни ignoreme2 не разрешены), чтобы совпадение.

Это сработало для меня: ^((?!\ignoreme1\b)(?!\ignoreme2\b)(?!\ignoreme3\b).)*$

Это сработало для меня в python 3.x для конвейера машинного обучения make_column_selector для включения и исключения определенных столбцов из фрейма данных. чтобы исключить ^(?!(col2|co4|col6)).*$

      categoral_selector = make_column_selector(pattern = "(col2|co4|col6)")
numeric_selector = make_column_selector(pattern = "^(?!(col2|co4|col6)).*$")

Это работает :

      (Request(?!\.Cookies|.Form\b))+

Будет соответствовать любому вхождению запроса , если за ним НЕ следует .Cookies или .Form.

Так :

  • Будет соответствовать запросу(
  • Будет соответствовать Request.Querystring
  • Не соответствует Request.Form
  • Не будет соответствовать Request.Cookies

Подробное объяснение этого регулярного выражения можно найти по адресу https://www.regextester.com/ .

Проще :

re.findall(r'/(?!ignoreme)(\w+)',  "/hello /ignoreme and /ignoreme2 /ignoreme2M.")

ты получишь:

['hello']
Другие вопросы по тегам