Страницы

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

четверг, 23 января 2020 г.

Поиск с помощью регулярных выражений

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


Всем привет!


  "Some people, when confronted with a problem, think "I know, I'll use
  regular expressions." Now they have two problems!" (c) Jamie Zawinski


Помогите найти всех "кошек" через регулярные выражения! :)

let's try to find this cat and this cat
let's try to find this cat and this cat
Вот это не сработало: (?<=
)((?!<\/div>)(cat|(?:.|\n))+)(?=<\/div>) Debuggex Demo Второй вопрос еще интересней - найти только тех кошек, которые сидят в блоках с классом "cats": cat
black cat, white cat
cat
black cat, white cat
cat


Ответы

Ответ 1



Для первого случая: Пример /|cat(?=.*?
)|(cat)(?=.*?<\/div>)/g пропускает открывающиеся div, или пропускает cat, за которыми следует открывающийся div, или захватывает cat, если за ним следует минимальное количество символов и закрывающийся
. Для второго случая Пример /
||(cat)(?=.*?<\/div>)/g пропускает открывающийся div с классом cats, или пропускает прочие div - целиком, или захватывает cat, если за ним следует минимальное количество символов и закрывающийся
. UPD: Благодаря дельным замечаниям ReinRaus новые варианты регулярок переписаны и теперь валидны как для PCRE, так и в js-реализации. Спасибо)

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

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