Как задать в регулярке - самое короткое совпадение, но не больше 20 символов?

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
через конструктор регвыров поставил самое короткое совпадение, а оно всё равно некоторые значения парсит с большим куском лишнего. как задать в регулярке не больше определённого количества символов?
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
(?<=User_name_Portal"\ href="/profile/){1,20}.*?(?="\ class="gs_result_i_t_name\ o">)
по идеи вроде так но чёт вариант не правилтный, если ты конечно просто колличество символов собираешь то пойдёт
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
(?<=User_name_Portal"\ href="/profile/){1,20}.*?(?="\ class="gs_result_i_t_name\ o">)
по идеи вроде так но чёт вариант не правилтный, если ты конечно просто колличество символов собираешь то пойдёт
а что не правильно? мне надо просто, чтобы бралось значение, но максимальная длина совпадения была не больше 20 символов, т.е. если после 20-го символа не идёт указанный текст, то брать не надо. вообще в идеале указать, чтобы только цифры были, тогда надо
(?<=User_name_Portal"\ href="/profile/)[0-9]{1,20}.*?(?="\ class="gs_result_i_t_name\ o">) - так, правильно?
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
или .*? не надо вписывать, а вместо него вот это .[0-9]{1,20} , наверно так правильно?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
или .*? не надо вписывать, а вместо него вот это .[0-9]{1,20} , наверно так правильно?
Только [0-9]{1,20}, без точки. Или \d{1,20}
Код:
(?<=User_name_Portal"\ href="/profile/)[0-9]{1,20}(?="\ class="gs_result_i_t_name\ o">)
(?<=User_name_Portal"\ href="/profile/)\d{1,20}(?="\ class="gs_result_i_t_name\ o">)
 
  • Спасибо
Реакции: arhip1985

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
через substring возьми с какого и по какое тогда тебе надо
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
{1,20} - это называется квантификатор. Если по-русски - количество повторений чего либо.
При указании .{1,20} - точка- любой символ, кроме возврата коретки. Таким образом, в пределах одной строки будут искаться последовательности любых данных в пределах от 1 до 20. Исходя из этого уже и стройте свою регулярку.
Т.е., чтобы задать от 1 до 20 чисел, указываем так \d{1,20}
 
  • Спасибо
Реакции: arhip1985

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