Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск строки с экранированием кавычек 
V
    Опции темы
silax
Дата 22.1.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.12.2010
Где: Благовещенск

Репутация: нет
Всего: нет



Помогите доработать регулярку:
Код

my $txt = 'NAME1:"test string 1" NAME2:"test ""string"" 2" ';
print "$1='$2'\n" while ($txt =~ /(\w+):\"([^\"]*)\"/g);

На выходе выдаёт:
NAME1='test string 1'
NAME2='test '


Нужно, что бы при поиске строки, две подряд идущие кавычки не обрабатывались как завершение, а включались в строку. Т.е. на выходе нужно получить:
NAME1='test string 1'
NAME2= 'test ""string"" 2'


PM MAIL   Вверх
alezzz
Дата 22.1.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Код

my $txt = 'NAME1:"test string 1" NAME2:"test ""string"" 2" ';
my @txt = split('(?<=")\s*(?=\w+:)', $txt);
foreach (@txt){
  print "$1=$2\n" if /(\w+):(".*")/;
}

PM MAIL   Вверх
alezzz
Дата 22.1.2011, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



точнее:
Код

print "$1='$2'\n" if /(\w+):"(.*)"/;


две двойные кавычки -- это экранирование как в VB?
PM MAIL   Вверх
silax
Дата 23.1.2011, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.12.2010
Где: Благовещенск

Репутация: нет
Всего: нет



Спасибо, работает!
Две двойные кавычки - это как в Pascal. В моём случае - это удобнее, чем экранирование обратным слэшем (что бы сам слэш не экранировать).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.