|
|
|
| Доброго дня уважаемые
подскажите пожалуйста каким выражением из данного текста выбрать [same data]
<root>
<trash></trash>
<element>
<trash></trash>
<element>
[same data]
</element>
</element>
<trash></trash>
</root>
(?<=<element>).*(?=</element>) с опцией dotall возвращает
<trash></trash>
<element>
same data
</element>
а мне надо
[same data] | |
|
|
|
|
|
|
|
для: alHaos
(08.11.2011 в 08:25)
| | Можно начать отталкиваться от следующего регулярного выражения
<?php
$text = '<root>
<trash></trash>
<element>
<trash></trash>
<element>
[same data]
</element>
</element>
<trash></trash>
</root>';
$pattern = "|<element>(.*?)</element>|is";
if(preg_match($pattern, $text, $out))
{
echo $out[1];
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.11.2011 в 12:04)
| | блин в реализации регулярных выражений под php слаб.
проверяю тут http://gskinner.com/RegExr/
|<element>(.*?)</element>|is не работает. | |
|
|
|
|
|
|
|
для: alHaos
(08.11.2011 в 12:18)
| | У вас какие регулярные выражения Perl или POSIX и где их планируете использовать? | |
|
|
|
|
|
|
|
для: cheops
(08.11.2011 в 12:45)
| | Хотелось бы решение которое не зависит от диалекта регулярных выражений. если Вам это интересно то я пользую их в oracle, и powershell. | |
|
|
|
|
|
|
|
для: cheops
(08.11.2011 в 12:04)
| | такое решение не подойдет, захватывается все от ПЕРВОГО <element> до первого </element>.
попробуйте $pattern = "|<element>((?!<element>).)+</element>|is"; | |
|
|
|