условное регулярное выражение - PullRequest
0 голосов
/ 23 июля 2011

Я анализирую xml-файл, который иногда имеет значение <avg_cpc>some number</avg_cpc>, иногда нет.

мое регулярное выражение выглядит так:

<is_adult>(.*?)</is_adult>.*?<trademark_probability>(.*?)</trademark_probability>.*?<total_extensions_used>(.*?)</total_extensions_used> **here comes the <avg_cpc>some number</avg_cpc>** .*?</appraisal>

как мне сделать это регулярное выражениесопоставить элементы, которые не имеют значения cpc?Я попытался (<avg_cpc>.*?</avg_cpc>)? без удачи.Спасибо!

Ответы [ 2 ]

5 голосов
/ 23 июля 2011

Пожалуйста, используйте настоящий анализатор XML для PHP вместо регулярных выражений.Это сделает все намного проще, не говоря уже о менее подверженных ошибкам.

2 голосов
/ 23 июля 2011

Полагаю, это потому, что вы не избежите косой черты, попробуйте это:

<is_adult>(.*?)<\/is_adult>.*?<trademark_probability>(.*?)<\/trademark_probability>.*?<total_extensions_used>(.*?)<\/total_extensions_used>(<avg_cpc>.*?<\/avg_cpc>)?.*?<\/appraisal>

Я бы также использовал [^ <] + вместо. *? если возможно. </p>

...