2012-02-29 2 views

ответ

9

Есть два регулярных выражений здесь. Первый:

\G # the end of the previous match 
".*?" # something in quotes 
(,|$) # and a comma, or the end of the string 

второй будет соответствовать, если первый терпит неудачу:

\G # the end of the previous match 
[^,]* # anything up to the next comma or end of string 
(,|$) # and then a comma, or the end of the string 

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

(Модификатор c означает сохранить текущую позицию, если согласование не удается, поэтому \G якорь не изменится во второй попытке, чтобы соответствовать, если первый терпит неудачу. Модификатор g устанавливает позицию для \G для следующего матч - между прочим.)

0

Первый означает соответствие каждой строке (это /gc) между кавычками, за которыми следует запятая или конец строки. Второй означает соответствие любой последовательности из нуля или более (это *) символов без запятой (это [^,]). Обратите внимание, что модификатор \G означает, что каждое новое совпадение должно начинаться сразу после предыдущего совпадения.

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