www.cn.ua
www.cn.ua
 Приветствуем Гость ( Войти | Зарегистрироваться )
 Правила форума  Фото-галерея
Поиск| Пользователи| Помощь 

>>Правила форума (05-02-2003)

Страниц: (2) [1] 2  ( Перейти к первому непрочитаному ответу ) ОтветитьДобавить темуНовый опрос
Вопрос по Regex
« Следующий старейший | Следующий новейший » Подписаться на тему | Отправить тему | Распечатать тему
Varlo
Написано Dec 7 2010, 17:02.     Номер поста в теме: 1 Цитировать


Advanced Member


Ответов: 1108





Подскажите, как написать RegEx, который бы распознавал строку с двойноми кавычками внутри.
Например, в таком выражении:
sdfsd sdf "P.P.U.H. "COLD" Sp.J." sdfsdfs sdfsd "AAABBB" sdfsdfsd
должен поймать:
P.P.U.H. "COLD" Sp.J.
AAABBB
 
Profile  PM  @    Top
Alexander
Написано Dec 7 2010, 17:33.     Номер поста в теме: 2 Цитировать


Full Member


Ответов: 929





Если программист решает проблему при помощи регулярных выражений то у него автоматически появляется ещё одна проблема


Will code HTML for food

Добро всегда побеждает зло. Очень зло.
 
Profile  PM  @    Top
Dust
Написано Dec 7 2010, 17:34.     Номер поста в теме: 3 Цитировать


Admin


Ответов: 18936





Ниче не понял.... Что по вашему строка? Если ограничитель начала-концы строки двойная кавычка, ее не должно быть в середине строки.


Ты скажи мне мой хороший, и еще чего нибудь....
 
Profile  PM  @    ICQ    Top
Varlo
Написано Dec 7 2010, 17:40.     Номер поста в теме: 4 Цитировать


Advanced Member


Ответов: 1108





Должен ловить строки, ограниченные внешними кавычками. То, что внутри - возвращать, даже с двойными кавычками. Согласен, задача нетривиальная.
 
Profile  PM  @    Top
ViPer
Написано Dec 7 2010, 17:41.     Номер поста в теме: 5 Цитировать


Advanced Member


Ответов: 1807





Varlo, все довольно просто - решение \"(.*)\"
В pcre по умолчанию * "жадный" повторитель, поэтому и имеем нужный вам результат.
Вот тут можно потестить
http://www.pcre.ru/eval/%5C%22(.*)%5C%22%4...%22%20sdfsdfsd/
 
Profile  PM  @    ICQ    Top
Dust
Написано Dec 7 2010, 17:42.     Номер поста в теме: 6 Цитировать


Admin


Ответов: 18936





Varlo, Тогда у вас 1 строка:
"P.P.U.H. "COLD" Sp.J." sdfsdfs sdfsd "AAABBB"

Добавлено:(Dec 7 2010, 19:42)
ViPer, Ага - только это немного не то


Ты скажи мне мой хороший, и еще чего нибудь....
 
Profile  PM  @    ICQ    Top
ViPer
Написано Dec 7 2010, 17:50.     Номер поста в теме: 7 Цитировать


Advanced Member


Ответов: 1807





Dust, ага, оно ловит как раз то, что ты написал )


Добавлено:(Dec 7 2010, 18:50)
Может вот так?
 
Profile  PM  @    ICQ    Top
Varlo
Написано Dec 7 2010, 17:55.     Номер поста в теме: 8 Цитировать


Advanced Member


Ответов: 1108





Да, такое выражение вроде ловит:
\"([^"]*"?[^"]*"?[^"]*)"

ViPer, Спасибо, Саня!
 
Profile  PM  @    Top
Dust
Написано Dec 7 2010, 17:56.     Номер поста в теме: 9 Цитировать


Admin


Ответов: 18936





Я не очень вкурил почему экранируется только первые кавычки?


Ты скажи мне мой хороший, и еще чего нибудь....
 
Profile  PM  @    ICQ    Top
ViPer
Написано Dec 7 2010, 18:04.     Номер поста в теме: 10 Цитировать


Advanced Member


Ответов: 1807





QUOTE (Varlo @ Сегодня, 18:55)
Да, такое выражение вроде ловит:
\"([^"]*"?[^"]*"?[^"]*)"

ViPer, Спасибо, Саня!

Незачто, только я не Саня ;-)


Dust, да их там вообще не надо экранировать, просто не везде удалил
 
Profile  PM  @    ICQ    Top
Dust
Написано Dec 7 2010, 18:06.     Номер поста в теме: 11 Цитировать


Admin


Ответов: 18936





ViPer, неэкранирование спецсимволов может привести к совершенно фантастическим результатам...


Ты скажи мне мой хороший, и еще чего нибудь....
 
Profile  PM  @    ICQ    Top
Varlo
Написано Dec 7 2010, 18:36.     Номер поста в теме: 12 Цитировать


Advanced Member


Ответов: 1108





Нет, не все ловит \"([^"]*"?[^"]*"?[^"]*)"
Такое не ловит:
цвет="Металик" ИЛИ цвет="Белый"
Поймало Металик" ИЛИ цвет="Белый.
 
Profile  PM  @    Top
ViPer
Написано Dec 7 2010, 18:47.     Номер поста в теме: 13 Цитировать


Advanced Member


Ответов: 1807





Varlo, так а что должно было ловить?
Ты б объяснил что ты хочешь выловить, примеры РЕАЛЬНЫХ строк и тд.
 
Profile  PM  @    ICQ    Top
Varlo
Написано Dec 7 2010, 18:55.     Номер поста в теме: 14 Цитировать


Advanced Member


Ответов: 1108





цвет="Металик" ИЛИ цвет="Белый" - ловит Металик и Белый
"P.P.U.H. "COLD" Sp.J." ИЛИ sdfsdfs sdfsd "AAABBB" - ловит P.P.U.H. "COLD" Sp.J. и AAABBB
 
Profile  PM  @    Top
ViPer
Написано Dec 7 2010, 18:57.     Номер поста в теме: 15 Цитировать


Advanced Member


Ответов: 1807





то есть я так понимаю некий разделитель ИЛИ там всегда присутствует?
 
Profile  PM  @    ICQ    Top
Страниц: (2) [1] 2 
0 Пользователей читают эту тему (0 Гостей и 0 Анонимных пользователей)
0 Пользователей:
27 ответов с Dec 7 2010, 17:02 Подписаться на тему | Отправить тему | Распечатать тему

<< Хард&Софт
ОтветитьДобавить темуНовый опрос

 



Support by Dust


  RSS лента  web counter Перепечатка материалов приветствуется с гиперссылкой на "https://forum.cn.ua"