Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не жадное регулярное выражение. / 8 сообщений из 8, страница 1 из 1
01.01.2015, 13:41
    #38847418
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Ребята всех с НОВЫМ ГОДОМ!!!
Всех благ всем и во всем, пусть код множится, а голова и пальцы никогда не болят.

Подскажите пожалуйста, имея вот такой html код
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
....
<ul>
        <li id="phoneNo_li6">tel1<span dir="ltr">009</span></li>
        <li id="phoneNo_li8">tel2<span dir="ltr">008</span></li>
        <li>
            123454 &nbsp; 
            <span>post</span>
        </li>
        <li>
            Saudi &nbsp; 
            <span>coutry</span></li>
        <li>
            Tunisia &nbsp;
            <span>city</span></li>
    </ul>
....


как правильно написать регулярное выражение, чтоб была привязка к конечному </ul> и смежной с ней парой <li></li>
количество <li> постоянно меняются.
Если написать так.
Код: html
1.
<li>(.*?)<span>city<\/span>(.*?)<\/li>(.*?)<\/ul>

то регулярка захватывает весь блок

....
<ul>
<li id="phoneNo_li6">tel1<span dir="ltr">009</span></li>
<li id="phoneNo_li8">tel2<span dir="ltr">008</span></li>
<li>
123454  
<span>post</span>
</li>
<li>
Saudi  
<span>coutry</span></li>
<li>
Tunisia  
<span>city</span></li>
</ul>
....

а как привязать ее именно к последнему?

....
<ul>
<li id="phoneNo_li6">tel1<span dir="ltr">009</span></li>
<li id="phoneNo_li8">tel2<span dir="ltr">008</span></li>
<li>
123454  
<span>post</span>
</li>
<li>
Saudi  
<span>coutry</span></li>
<li>
Tunisia  
<span>city</span></li>
</ul>
....


Пример в regexr

Спасибо заранее.
...
Рейтинг: 0 / 0
01.01.2015, 14:45
    #38847437
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Возможно, так
Код: php
1.
'/<li>([^<]+?)<span>city<\/span><\/li>[^<]+<\/ul>/s'



Что именно хотите захватить?
...
Рейтинг: 0 / 0
01.01.2015, 14:51
    #38847438
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Благодарю, то что нужно.
Можно попросить расписать словами?
Пытаюсь понять, что-то туго идет.
...
Рейтинг: 0 / 0
01.01.2015, 15:12
    #38847446
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Kreol, а что не понятно? Это же Ваш регексп, только в нём "что угодно, которое может быть, а может и не быть" исправлено на "должна быть не левая угловая скобка".
...
Рейтинг: 0 / 0
31.01.2015, 22:05
    #38868600
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Чтоб не плодить новые темы, спрошу тут.
В связи с ограничением программы у меня имеется лишь функция выборки регуляркой Match
У меня возникла проблема, нужно насочинять, если конечно такое возможно, регулярку, которая выберет все кроме самих тегов и то что в них + заменить их на пробелы.
имеем:
Код: html
1.
2.
<li id="phoneNo_li6">tel1<span dir="ltr">009</span></li>
<li id="phoneNo_li8">tel2<span dir="ltr">008</span></li>



получаем:

Код: html
1.
2.
tel1 009
 tel2 008 


Спасибо.
...
Рейтинг: 0 / 0
31.01.2015, 22:15
    #38868603
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Kreol, если на PHP пишите - поглядите на strip_tags .
...
Рейтинг: 0 / 0
31.01.2015, 23:07
    #38868618
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
К сожалению я могу лишь использовать регулярку выборки.
Разработчик отказывается реализовать replace для данного функционала.
А тот что есть мне не подходит ибо там другие проблемы.
...
Рейтинг: 0 / 0
02.02.2015, 05:35
    #38868988
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не жадное регулярное выражение.
Kreol,

заменяем теги на пробелы
Код: php
1.
2.
3.
$str = '<li id="phoneNo_li6">tel1<span dir="ltr">009</span></li>
<li id="phoneNo_li8">tel2<span dir="ltr">008</span></li>';
echo preg_replace('/<[^>\n]+>/', ' ', $str);
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не жадное регулярное выражение. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]