Что нового

RegExp Получить набор символов в группе

IMStrelcov

CTPEJIbLLOB
Сообщения
258
Репутация
66
Суть такая, например есть строка 176djf764646ryry yfy 66464 46 yryyr, нужно из нее получить группу подряд идущих или цифр или не цифр, минуя при этом указанное кол-во таких групп.

Т.е. например мне нужно получить 4-ю группу пропустив 3-и первые, это будет:
1 группа. 176
2 группа. djf
3 группа. 764646
4 группа. ryry yfy
5 группа. 66464
6 группа.
7 группа. 46
8 группа. yryyr

Результат: ryry yfy

Код:
StringRegExpReplace('176djf764646ryry yfy 66464  46 yryyr', '([0-9]+|[^0-9]+){4}.*', '$1')


Как бы выражение выше выдает мне тот результат что нужно, но если я указываю например 9-ю группу, а ее в строке нет, то выражение вместо пустой строки возвращает мне последний символ последней существующей группы.
Через StringRegExp('176djf764646ryry yfy 66464 46 yryyr', '([0-9]+|[^0-9]+)', 3) все работает, но не хочу массивы, хотелось бы через StringRegExpReplace.

Подскажите как данную проблемку решить, чего не хватает в выражении, чтобы при отсутствии группы выводило пустую строку, а не последний символ.
 
Последнее редактирование:

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Ну я думаю тут поможет рекурсивный поиск и условные группы, но не понял как так вышло что
Группа с проблелом это одна, а дальше
5 группа. 66464
6 группа.
7 группа. 46
3 группы в одной из которых пробел тоже группа
 
Автор
IMStrelcov

IMStrelcov

CTPEJIbLLOB
Сообщения
258
Репутация
66
Да любой набор последовательных цифр это группа
Последовательный набор других символов, это другая
Даже если между цифрами одни пробелы, то эти пробелы будут в другой группе
Да группа с пробелами это отдельная группа стоящая между другими
 
Верх