Регулярное выражение для исключения слова / строки
У меня есть регулярное выражение следующим образом:
^/[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']