Группа захвата с именем «четвертый» (группа захвата 1) даст ожидаемый результат:
(?<number>\d{1,3}(?:,\d{3})*\.\d*){0}(?:(?&number) ){3}(?<fourth>(?&number))(?=(?: (?&number)){2})
Позволяет разбить его на части:
(?<number>\d{1,3}(?:,\d{3})*\.\d*){0}
определяет имя «число», где число определяется как
- по крайней мере одна и не более 3 цифр
- опционально сопровождается бесконечным количеством коммы и тремя цифрами
- необходимый период
- бесконечное количество цифр (или ни одной)
(?:(?&number) ){3}
Совпадение трех чисел, за которыми следует один пробел Взгляды не поддерживаются, поскольку число не имеет фиксированной длины.
(?<fourth>(?&number))
Соответствует одному номеру, без пробела.
(?=(?: (?&number)){2})
Утверждают, что есть еще два числа, разделенных пробелами.
Как простое регулярное выражение
если ваш движок регулярных выражений не разрешает именованные группы захвата, то этот простой регулярный выражения выполнит ту же работу:
(?:\d{1,3}(?:,\d{3})*\.\d* ){3}(\d{1,3}(?:,\d{3})*\.\d*)(?=(?: \d{1,3}(?:,\d{3})*\.\d*){2})