Вытягиваем строку, ограниченную кавычками

Категория: RegEx Комментариев: 4

Регулярное выражение, извлекающее из текста участок, ограниченный кавычками, не реагируя на кавычки закрытые бекслешем.
(?s)(?<!\)"((?:(?<=\)"|[^"]++)*)(?<!\)"

Автор: Кто-то   @   28 марта 2009 Комментариев: 4
Метки :

Поблагодарить автора

Webmoney Z163628999150, R617151845974

Комментариев: 4

Комментарии
Сен 28, 2009
13:26
#1 Deerua :

Для чего он написан? пхп? пёрл? шел?

Автор Сен 28, 2009
19:21

Для любого языка, кмеющего работать с регулярными выражениями

Авг 30, 2010
16:26
#3 Vlad :

Я пробую использовать выражение в PHP, но оно дает ошибку.

if (preg_match ((?s)(?<!\)"((?:(?<=\)"|[^"]++)*)(?<!\)", $exp, $ok)) {

или так

if (preg_match ("(?s)(?<!\)"((?:(?<=\)"|[^"]++)*)(?<!\)", $exp, $ok)) {

Еще у меня выражение усложняется тем, что кавычки в тесте могут быть как одинарные, так и двойные...

aaaa "aaaaa" aaaaa

aaaa 'aaaaa' aaaaa

Пожалуйста помогите с решением

Автор Авг 30, 2010
19:56

$str="aaaa \"str1\" aaaaa aaaa 'str2' aaaaa";

$pattern = '/[\'"](.*?)["\']/';

preg_match_all ($pattern, $str, $matches);

print_r ($matches);

Нисал на коленках, поэтому пришлось пожертвовать проверкой на наличие бекслешей и использование одинарных кавычек внутри двойных и наоборот.

оставить комментарий

Предыдущая запись
«
Следующая запись
»