Помогите с регулярным выражением

Nimous

Guest
Помогите с регулярным выражением

Нужен рег для следующей строки:

"любые символы между двух кавычек,
включая сами кавычки с предстоящим бэкслешем\"(любое количество.)"

Задача вроде-бы несложная,
но никак не удаётся получить нужный результат.

Может, у кого-нибудь есть решение?
 

Nimous

Guest
Чё-то не пашет.
preg_match_all(): Compilation failed: missing ) at offset 13

строка: "some_str\"ing";
рег: "/\"(.+?)(?!<\\)\"/"

что не так?
...
Проблема с \;

Ошибка исчезает, если добавить ещё один слеш перед последней закрывающей скобкой,

Но тогда результат опять не тот.

Как быть?
 

Steamroller

Новичок
Описка вышла. :)
/"(.+?)(?<!\\)"/
Соответственно в строке это так:
$regex = '/"(.+?)(?<![\\\\])"/';
Либо ещё вариант:
$regex = '/"(.+?[^\\\\])"/';
 

Nimous

Guest
Примите ОГРОМНОЕ СПАСИБО :)
А то я уже пару дней мучаюсь

-~{}~ 12.10.05 20:40:

В продолжение треда:

А как сделать, чтобы обрабатывались также строки с переносами?
'/"(.+?)(?<![\\\\])"/' не видит строку, если в ней находится \n;

Помогите, пожалуйста.
 

440hz

php.ru
Автор оригинала: Nimous
Помогите, пожалуйста.
оно? '/"(.+?)(?<![\\\\])"/s'

s (PCRE_DOTALL)
Если данный модификатор используется, метасимвол "точка" в шаблоне соответствует всем символам, включая перевод строк. Без него - всем, за исключением переводов строк. Этот модификатор эквивалентен записи /s в Perl. Класс символов, построенный на отрицании, например [^a], всегда соответствует переводу строки, независимо от наличия этого модификатора.
 
Сверху