#регулярные_выражения
Мне нужно определить в строке одно из 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|(?
Комментариев нет:
Отправить комментарий