purebasic.info

PureBasic forum
Текущее время: Пн окт 22, 2018 5:52 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:54 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
lakomet писал(а):
qpAHToMAS
Пробуй

Спасибо. С первого взгляда то что нужно. Позже разберусь детально.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:55 am 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Лучше уж тогда вот так
Код:
1
(?<;=LEFT )[0-9]+(?= RIGHT)


Пробелов между тегами может и не быть.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 12, 2013 2:36 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Не могу разобраться с заменой символов, например, строка "cat", хочу заменить на "dog", пробую так:
Код:
1
CreateRegularExpression(#regexp, "s/cat/dog")


Как описано в этой статье. Но не проходит :(.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 12, 2013 3:22 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Для замены надо использовать соответствующую функцию ReplaceRegularExpression, а CreateRegularExpression только создает регулярку.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 12, 2013 5:00 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
qpAHToMAS писал(а):
Не могу разобраться с заменой символов, например, строка "cat", хочу заменить на "dog"

Код:
1
2
3
#regexp = 0
CreateRegularExpression(#regexp,"cat")
Debug ReplaceRegularExpression(#regexp,"cat2cat catcatjhjcatircat","dog")


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 2:34 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Есть большой текстовый файл, "парсю" его некоторые части, вот например, часть из файла:
Код:
1
2
3
4
5
                                        pageTitle: "some text here"
                                });
                        });</script>
        </div>
 


Мне нужен текст "some text here" (без кавычек), создаю регулярное выражение:
Код:
1
  CreateRegularExpression(#rexp_title, "(?<=\QpageTitle: " + Chr(34) + "\E).*(?=\Q" + Chr(34) + "\E)")


Но здесь проблема в том, что .* — будет весь текст от pageTitle: " до последней " кавычки (Chr(34)) в документе. Что не годится. Как обработать текст как это делает браузер?
Пробовал выбирать текст от pageTitle: " до кавычки " и перевода каретки (\n), т.е.:
Код:
1
  CreateRegularExpression(#rexp_title, "(?<=\QpageTitle: " + Chr(34) + "\E).*(?=\Q" + Chr(34) + "\E\n)")


Но это не работает.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 2:52 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
qpAHToMAS
Ты первую кавычку-то включи в регулярку, а перенос строки можно убрать.
Код:
1
(?<;=()pageTitle: Chr(34))\S(.*?)(?=()Chr(34))



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 2:56 pm 
Не в сети
док

Зарегистрирован: Пн авг 23, 2010 12:25 am
Сообщений: 113
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
qpAHToMAS
попробуй так :
Код:
1
2
3
 
CreateRegularExpression(#rexp_title, "(?<=pageTitle:[ \t]*" + Chr(34) + ")([^" + Chr(34) + "]+)")
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 3:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
asdf8, такая регулярка не создается.
MrF, походу работает:
Код:
1
"(?<=()pageTitle: " + Chr(34) + ")\S(.*?)(?=()" + Chr(34) + ")"


Но я не понимаю как. Слишком отличается от моего кода (без \Q\E и с \S и т.п.). К тому же:
MrF писал(а):
Ты первую кавычку-то включи в регулярку

Я же включал:
Цитата:
"(?<=\QpageTitle: " + Chr(34) + "\E).*(?=\Q" + Chr(34) + "\E)"

Проблема именно в последней кавычке, которая искалась в конце файла.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 3:23 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Вообщем прошу помочь в составлении нескольких регулярных выражений. Оплата через Яндекс.Деньги.
MrF, надеюсь в первую очередь на твою отзывчивость.

ICQ в профиле. Можно ЛС, IRC, etc.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 3:43 pm 
Не в сети
док

Зарегистрирован: Пн авг 23, 2010 12:25 am
Сообщений: 113
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
Цитата:
asdf8, такая регулярка не создается.


регэкспы в РВ странно реализованы - не поддерживаются спецсимволы при позиционной проверке. Будем знать. Но, все равно, стремно как-то.

Вот так должно работать :
Код:
1
2
3
 
CreateRegularExpression(#rexp_title, "(?<=pageTitle: " + Chr(34) + ")([^" + Chr(34) + "]+)")
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 08, 2013 4:43 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
qpAHToMAS писал(а):
отличается от моего кода (без \Q\E

При помощи \Q и \E экранируется последовательность символов, которые находится между ними, зачем ты вообще pageTitle и кавычку экранировал?

qpAHToMAS писал(а):
Я же включал:

А, ну да.

qpAHToMAS писал(а):
Проблема именно в последней кавычке, которая искалась в конце файла.

Не, не в кавычке, а в том, что ты не ограничил действие квантификатора * знаком вопроса. Добавь его после звездочки и твоя регулярка заработает.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб май 31, 2014 6:05 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 684
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Объясните как передать запомненное в скобках, саму регулярку я знаю(JavaScript), я не понимаю как это передать в ReplaceRegularExpression(), не понимаю как всем этим великолепием пользоваться в РВ. Без регулярки как без воды.
Может нужно что то подключить, объясните что и как подключить.

Цитата:
re=Chr(34)+"(\d+)G|B|V"
CreateRegularExpression(0, re)
s1=ReplaceRegularExpression(0, s1, Chr(34)+">ЧТО ТАМ БЫЛО В СКОБКАХ</td>")

Пришлось использовать цитату чтобы цвет сработал.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июн 16, 2014 9:55 am 
Не в сети
док

Зарегистрирован: Чт ноя 22, 2007 8:03 pm
Сообщений: 171
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Как я понял, backreference в регулярных выражениях не поддерживается. На офф форуме предлагались обходные решения на основе pcre_exec. Но эти обходные не решения не работают с юникодом! Подскажите, как-то можно это решить и обрабатывать таким образом строки в юникоде?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июн 16, 2014 10:27 am 
Не в сети
доцент

Зарегистрирован: Ср апр 02, 2014 12:55 pm
Сообщений: 46
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Smitis писал(а):
Как я понял, backreference в регулярных выражениях не поддерживается. На офф форуме предлагались обходные решения на основе pcre_exec. Но эти обходные не решения не работают с юникодом! Подскажите, как-то можно это решить и обрабатывать таким образом строки в юникоде?

Скомпилировать PCRE с поддержкой unicode ?
http://www.regular-expressions.info/pcre.html


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB