2009-06-15 3 views
1

Я пытаюсь написать регулярное выражение в PHP. Из этого кода я хочу сопоставить «бар».PHP регулярное выражение для извлечения цитируемого текста в теге body

<data info="foo"> 
    "bar"|tr 
</data> 

Я пробовал два регулярных выражения без успеха. Он соответствует «foo»> «bar».

$regex = '/"(.*?)"\|tr/s'; 
$regex = '/"[^"]+(.*?)"\|tr/s'; 

Кто-нибудь может мне помочь?

ответ

3

Вы должны обратный слеш в PHP строках:

$regex = '/"([^"]*)"\\|tr/s'; 

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

Поскольку вы, похоже, применяете регулярное выражение к XML, я просто хочу предупредить вас, что XML и регулярные выражения не хорошо сочетаются. Regex рекомендуется только в сочетании с DOM.

+0

Большое вам спасибо. Оно работает. –

+0

Добро пожаловать. – Tomalak

0
\"\w+\" 

должен соответствовать любому слову символа в скобках

+0

Я бы соответствовал также «bar foobar» | tr и ни одного слова. Спасибо за Ваш ответ. –

0

Попробуйте это:

$regex = '/"([^">]+)"\|tr/s' 

Если вы хотите, чтобы соответствовать только буквы и цифры, вы можете сделать:

$regex = '/"([\w\d]+)"\|tr/s' 
+0

Спасибо, он тоже работает ... –

0
$regex = '/"(.+?)"(?=\|tr)/' 

будет соответствовать "bar" (включая кавычки), и у вас есть строка bar (без кавычек) в $ 1. Использует look-ahead.

+0

Спасибо тоже ... –

Смежные вопросы