Конструктор регулярных выражений не находит часть строки по заданным параметрам

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
29
Благодарностей
1
Баллы
3
Привет всему сообществу
Пишу бот по парсингу нужных сайтов с карты гугл. Нужно спарсить результат из полученных данных, но почему то регулярное выражение находит не самый короткий результат.

87484

Догадываюсь что причина в том, что данные в одной строке. А как же мне получить один кусок текста от урла до ключевого слова?
Не сочтите за труд, помогите начинающему.
Спасибо
---
Рег.выражение:
https[\w\W]*?Благотворительность

Текст для примера:
href="https://www.google.com/maps/place/The+London+Children’s+Practice/data=!4m5!3m4!1s0x48761ad398351ef7:0xcf03a0749e7ae9c0!8m2!3d51.4905548!4d-0.1603366?authuser=0&hl=ru&rclk=1" href="https://www.google.com/maps/place/Mary's+Meals+London/data=!4m5!3m4!1s0x48760fe0b214fffd:0x5784e7db0390ccbc!8m2!3d51.510085!4d-0.2108501?authuser=0&hl=ru&rclk=1" jstcache="104">Благотворительность
 
Последнее редактирование модератором:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 684
Баллы
113
@sistemanipel Тут требуется особая регулярка, либо замена направления поиска. В конструкторе рег-выражений и кубиках - поиск производится слева-направо (поменять направление нельзя), т.е. что нашлось из зацепок - сразу берется и потом ищется окончание. Поэтому тут ищет подобным образом.

Можете воспользоваться C#-методом замены направления поиска на справа-налево, например так:

C#:
//регулярка
string pattern = "https.*?Благотворительность";

//обычный поиск - слева-направо
//Regex reg = new Regex(pattern);

//замена направления поиска - справа-налево
Regex reg = new Regex(pattern, RegexOptions.RightToLeft);

return reg.Match(project.Variables["textsource"].Value).Value;
Приложил пример шаблона с этим кодом.
 

Вложения

Последнее редактирование:

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
29
Благодарностей
1
Баллы
3
@sistemanipel Тут требуется особая регулярка, либо замена направления поиска. В конструкторе рег-выражений и кубиках - поиск производится слева-направо (поменять направление нельзя), т.е. что нашлось из зацепок - сразу берется и птом ищется окончание. Поэтому тут ищет подобным образом.

Можете воспользоваться C#-методом замены направления поиска на справа-налево, например так:

C#:
//регулярка
string pattern = "https.*?Благотворительность";

//обычный поиск - слева-направо
//Regex reg = new Regex(pattern);

//замена направления поиска - справа-налево
Regex reg = new Regex(pattern, RegexOptions.RightToLeft);

return reg.Match(project.Variables["textsource"].Value).Value;
Приложил пример шаблона с этим кодом.
у меня 7.5.1 еще :(
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 684
Баллы
113
  • Спасибо
Реакции: Mudcrab и sistemanipel

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
29
Благодарностей
1
Баллы
3

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 684
Баллы
113
  • Спасибо
Реакции: Mudcrab и sistemanipel

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
29
Благодарностей
1
Баллы
3
Раскомментировать 5-ую строку и закоментировать 8-ую.
код ваш работает ок,
уточнил регулярку и код выдал ошибку после "С начала" вашего шаблона:
Компиляция кода Ошибка в действии "CS1009" "Unrecognized escape sequence". [Строка: 2; Cтолбец: 30]
Компиляция кода Ошибка в действии "CS1009" "Unrecognized escape sequence". [Строка: 2; Cтолбец: 38]

"textsource" тот же
новая регулярка:
https://www\.google\.com/maps/place/.*?Благотворительность
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 684
Баллы
113
  • Спасибо
Реакции: Mudcrab и sistemanipel

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
29
Благодарностей
1
Баллы
3
Во 2-ой строке перед открывающей кавычкой (перед регуляркой), поставьте собачку @
добрый день
а если регулярка в переменной, то не работает :( может как то доработать ваш код чтобы все совпадения в список записывал, или переменные использовать чтобы собрать совпадения циклом?
Можете помочь?
Спасибо
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 684
Баллы
113
добрый день
а если регулярка в переменной, то не работает :( может как то доработать ваш код чтобы все совпадения в список записывал, или переменные использовать чтобы собрать совпадения циклом?
Можете помочь?
Спасибо
Скорее всего в вашем коде переменная была неправильно прописана.
Приложил поправленный пример с переменной.
 

Вложения

  • Спасибо
Реакции: Mudcrab и sistemanipel

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)