Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Выбрать одно из заданных слов

#регулярные_выражения


Мне нужно определить в строке одно из N заданных слов. Для примера возьмём такие:
zero, .one, two

Частично с этим помогает справиться такое выражение: 

/\b(?:zero|\.one|two)\b/


Но есть одна проблема: оно не определяет .one, так как оно начинается с не-word символа (.)

Как же должно выглядеть правильное выражение для данного случая?
    


Ответы

Ответ 1



Дело в том, что регулярное выражение \b\.one\b может быть самопротиворечиво, т.к. граница слова здесь уже есть и она между точкой и буквой o: .one, это выражение сработает только если будет еще одна граница слова слева от точки, например: some.one, нужно ли вам это? Я не знаю. Таким образом вам придется начать с чего-то вроде: (?:\bzero\b|\.one\b|\btwo\b) и потом, возможно, добавить отрицательный просмотр назад: (?:\bzero\b|(?

Комментариев нет:

Отправить комментарий