Есть ли сервисы для генерации регулярных выражений?

Есть ли сервис, в который я могу выгрузить список фраз, чтобы он составил для них всех одно общее регулярное выражение? Тоесть чтобы при использовании этой регулярки любая фраза из списка в нее попала.
  • Вопрос задан
  • 993 просмотра
Решения вопроса 1
@Flying
Объединение всех фраз через | даст нужное регулярное выражение.

Язык в вопросе не указан, так что пример на PHP:
<?php

$phrases = [
    'Hello world',
    'Lorem ipsum',
    'Just some test phrase',
    'Phrase with special "|" chars',
];

$tests = array_merge($phrases, [
    'Some other text',
    'It should not match',
]);

$regex = sprintf('/^%s$/i', implode('|', array_map(function ($v) {
    return preg_quote($v, '/');
}, $phrases)));

echo $regex . "\n";

array_walk($tests, function ($phrase) use ($regex) {
    echo sprintf('%s: %s' . "\n", $phrase, preg_match($regex, $phrase) ? 'Matches' : 'Does not match');
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Expany
@Expany
$this->get('skill');
Пример теста то где? Или из головы вид и форму изобретать?
Ответ написан
Комментировать
Miay
@Miay
Full stack engineer
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Создаём "ядра" - уникальные ПОСЛЕДОВАТЕЛЬНЫЕ! сочетания символов каждой строки (относительно других) и запоминаем к какой фразе каждое ядро относится (номер строки - это ID ядра).
2. Записываем через "или" в регулярку: /(^core1$)|(^core2$)|(^...$)/usi
3. При совпадении ядра - мы точно знаем, что фраза есть в списке и ТОЛЬКО! 2-ым этапом проверяем фразу полностью (фразу находим, соответственно, по ID-ядра).

PS: Это имеет смысл делать, если фраз больше 10-ти (или общая длина символов всех строк превышает 100-150).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы