2013-03-09 5 views

ответ

1

В вашем втором комментарии к tchrist Ответим вам сказать, что первые и последние котировки должны быть в начале и конец строки? Если это так, то вам не нужно даже регулярное выражение вообще, просто взять всю строку минус первые и последние символы:

substr($a, 1, -1) 
6

Причина, по которой ваша не работает, заключается в том, что вы пытаетесь ограничить первый кавычек появлением в начале строки или сразу после новой строки в любом месте там и последний кавычек встречаются либо в конце строки, либо непосредственно перед новой строкой в ​​любом месте.

Это не то, что ваши данные содержат. Не делай этого сложнее, чем нужно.

Если вы хотите, все между первой двойной кавычки, а последний, в том числе других, то вы хотите

($content) = $string =~ /"(.*)"/sx; 

Если вы хотите их много, и никакие двойные кавычки внутри, вы хотите:

(@contents) = $string =~ /"([^"]*)"/gx; 
+1

($ содержание) = $ строки = ~ /"(.*) "/ sx работает для меня, но в чем разница с $ content = $ string = ~ /"(.*)"/ sx, который не работает? @tchrist – bootware

+0

, ограничивающий возможность начала и конца строки - это то, что я хотел. @tchrist – bootware

0

По какой-то причине я не могу добавить комментарий, поэтому я создаю ответ, чтобы ответить на комментарий к загрузке от пользователя tchrist. Разница между и $content=$string=~/"(.*)"/sx заключается в том, что предыдущий соответствует контексту списка, а позднее - в скалярном контексте. В скалярном контексте результат - это просто 1 или 0, указывающий, соответствует ли строка регулярному выражению. В контексте списка возвращается список подстроки, который соответствует каждой скобкой в ​​регулярном выражении в порядке слева направо. В этом случае в регулярном выражении был один набор круглых скобок, поэтому в возвращаемом списке был один элемент, часть строки, которая находилась внутри кавычек.

Бонус: Вы можете обратиться к подстрокам совпавших в каждом наборе скобок, используя $ 1, $ 2, ...

+0

У вас недостаточно репутации для добавления комментариев к каждому сообщению. –

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