Включение ИЛИ в регулярное выражение (PHP) - PullRequest
0 голосов
/ 07 октября 2011

Попытка создать шаблон, включающий условие или .

$pattern["body"]='/(<\/a><\/li><\/ul><\/div><p>|<h2>)(.*)<div class="like">/s';

Шаблон должен распознавать любой текст между сериями "<\/a><\/li><\/ul><\/div><p>" или a "<h2>" в качестве начального разделителя, но, очевидно, условие или не работает в этом случае. Любой может предложить подсказку для правильного синтаксиса !? Я стремлюсь на 1 час, и я потерял концентрацию и терпение в этом правиле. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 07 октября 2011
"(?<=</a></li></ul></div>|<h2>).*"

см. Ниже тест grep:

kent$  echo "</a></li></ul></div>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                  
something

kent$  echo "<h2>something"|grep -Po "(?<=</a></li></ul></div>|<h2>).*"                                                                  
something
0 голосов
/ 07 октября 2011

Это может сработать http://www.ideone.com/zYB1n
Но я не эксперт по PHP.

$regex = '/(?:<\/a>\s*<\/li>\s*<\/ul>\s*<\/div>\s*<p>|<h2>)(?<Text>[\S\s]*)(?=<div class="like">)/';
if (preg_match( $regex, $str1, $matches ))
  print_r( $matches['Text'] );
0 голосов
/ 07 октября 2011
'%(</a></li></ul></div><p>|<h2>)(.*)<div class="like">%s'

У меня нет образцов данных для проверки, но похоже, что вы были там.Я только изменил разделитель, чтобы его не нужно было экранировать, я понял, что это легче понять.

...