Выражение регулярного выражения для фильтрации по нескольким значениям - PullRequest
0 голосов
/ 15 января 2020

Я хочу выражение Regex, которое позволяет мне определять несколько значений, которые должны точно совпадать.

В этом случае, скажем, я хочу соответствовать точному значению, которое я ввел (без учета регистра), которое : Аудиокнига и аудиокнига. Если у меня есть данные, приведенные ниже, мои выходные данные должны совпадать на 2 (поскольку у аудиокниг есть дополнительные s). Я пробовал

(?:^|\W)audiobook(?:$|\W)|(?:^|\W)*?Audio book(?:$|\W) 

, но похоже, что он не предоставляет правильные данные, поскольку я получаю только одно возвращенное значение.

Аудиокниги

аудиокнига

Электронная книга

Книга

Книга

Слушать книгу Аудио книга

1 Ответ

0 голосов
/ 15 января 2020

Вы можете использовать границу слова \b, чтобы слово не являлось частью более длинного слова, и использовать необязательную часть для сопоставления с необязательным пробелом и необязательным s после книги.

Чтобы сделать регистр соответствия нечувствительно, вы можете установить флаг на вашем инструменте или языке.

\bAudio(?: ?books?)?\b
  • \bAudio Граница слова и совпадение Audio (или использовать [aA]udio без флага без учета регистра)
  • (?: Группа без захвата
    • ?books? Соответствует пробелу book и необязательно s
  • )? Закройте группу и сделайте ее необязательной
  • \b Граница слова

Демонстрация регулярных выражений с флагом без учета регистра

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