LINUX.ORG.RU

Нужна регулярка

 ,


0

1

Что-то не могу сообразить сам. Есть строка:

foo #bar <a href=«bar»>#bar</a>

Нужна регулярка, которая найдёт #bar НЕ внутри тега <a>. При этом #bar может быть в начале, в конце и в середине текста, поэтому искать по \s#\w+\s нельзя. Эйни хелп?

★★★★★

Последнее исправление: ymn (всего исправлений: 2)

Разные prce в разных ЯП умеют по разному, а некоторые что-то даже не умеют. Тебе для какого?

deep-purple ★★★★★
()
Ответ на: комментарий от xorik

В href будет без #, так что пофиг.

Alve ★★★★★
() автор топика
(#\w+).+[^<]

Как-то так? Но решение не лучшее, ибо:

1.Вытягивать нужно первую группу из скобок вручную, ибо матчится вся строка после неё.

2.Довольно прожорливым будет, ибо см. пункт 1.

Диалект пайтоновский.

Lilly
()
Ответ на: комментарий от Lilly

[^<]

Так может зацепить другой тег, не только закрывающий </a> я потому и написал там строчное отрицание. Но я не уверен что у ТС такое отрицание взлетит на рубильнике.

deep-purple ★★★★★
()
Ответ на: комментарий от Stil

а что с жадностью?

Понятия не имею - пусть сам тюнингует, оно блин НЕ везде одинаково себя ведет. Чо там? Поставил «U» или убрал и делов то.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Идея хороша, только ведь там могут быть ссылки не на хэштеги, а другие. Стало было надо их как-то отличать. Может класс какой-то прицепить к ссылке. Надо подумать.

Alve ★★★★★
() автор топика
Ответ на: комментарий от Alve

А вообще, если чота сложное выпарсивать, то взамест костыльных рыгулярок правильнее построить дерево через какую-то xml-либу, загрузив туда этот текст для парса, и спокойно повыдрать все что надо в любых нодах, по любым критериям.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Ну тогда можно с жадностью поиграть, но там уже нужно будет другие символы цеплять к регулярке. Ладно, моё решение на скорую руку, так что тут ты прав.

Lilly
()
Ответ на: комментарий от deep-purple

?

И «чо»? Ну выводит первый и поседние два, нужно по-другому?

// в следующий раз пример получше подбери: ну постфикстный индекс добавь хотя бы, а то неудобно

anonymous
()

Не нужно парсить html регулярками. Html не является регулярным языком.

zinfandel ★★
()

1) удали все <a>#bar</a>

2) спокойно выбирай #bar

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.