2013-08-02 5 views
2

Я хотел построить spamassassin URL, который соответствует:регулярное выражение, чтобы захватить любые несколько слов в предложении

«информирует о том, что ключ безопасности истек»

и вариации, где может быть От 1 до 3 слов перед словом "has", и он все еще должен соответствовать.

Я продолжаю пытаться и тестировать в онлайн-инструменте regex. Я использовал .\w, но могу заставить его работать только частично одним словом до слова "has". Я хочу от 1 до 3 слов.

+0

лучше добавить варианты, чтобы получить солидный ответ –

ответ

0

Это регулярное выражение, которое соответствует от 1 до 3 слов между словами «ключ» и «имеет», и вот ссылка на RegExr, который его тестирует. Я признаю, что я не знаком с spamassassin, но если все, что вам нужно это регулярное выражение, чтобы соответствовать строку текста, то это должно работать:

key(\b\s((\w+\b\s){1,3})has

Использование скобок {1,3} означает, что предыдущий маркер (в данном случае , группа (\w+\b\s)) должна соответствовать хотя бы один раз, но не более трех раз. Токен \b соответствует границе слова, а \s соответствует любому пробелу. \w, как вы знаете, соответствует любому буквенно-цифровому символу.

Если вам нужно, вы можете использовать обратную связь для извлечения группы 1, которая теперь содержит слова между «ключ» и «имеет» (а также пробелы, окружающие их). Надеюсь это поможет!

1

Чтобы соответствовать 1-3 словам, предшествующим слову «есть», вы можете использовать (\w+){1,3}has.

Надеюсь, это ответили на ваш вопрос. Кажется, это все, о чем вы просите.

Смежные вопросы