2 регулярных выражения для извлечения номера сборки и названия версии - PullRequest
1 голос
/ 22 мая 2019

Я действительно изо всех сил пытаюсь понять регулярные выражения.

У меня есть эта строка:

Windows SERVERMAIN 10.0.14393 Microsoft Windows Server 2016 Standard x64

Мне нужно создать два регулярных выражения.

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

10.0.14393

Второй должен вернуть все после третьего пробела, поэтому у меня осталось:

Microsoft Windows Server 2016 Standard x64

Может ли кто-нибудь помочь мне с этим, пока я мог использовать только:

\s+\w+\s(.*)

Что дает мне:

SERVERMAIN 10.0.14393 Microsoft Windows Server 2016 Standard x64

Обновление 1 После помощи от @ rock321987 я рассмотрел, как я хочу это реализовать.

Теперь у меня есть эта строка:

Microsoft Windows Server 2016 Datacenter x64 - 10.0.14393

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

Microsoft Windows Server 2016 Datacenter x64

10.0.14393

1 Ответ

2 голосов
/ 22 мая 2019

Regex 1

^.*?[ ]+.*?[ ]+(.*?)[ ]

Regex 2

^.*?[ ]+.*?[ ]+.*?[ ]+(.*)$

Распределение по регулярному выражению 1

^ #Start of string
.*?[ ]+ #Match till 1st space
.*?[ ]+ #Match till 2nd space
(.*?)[ ]+ #Capture the match after 2nd space till 3rd space

Распределение по Regex 2

^.*?[ ]+.*?[ ]+.*?[ ]+ #Explanation same as above. Match till 3rd space
(.*)$ #Match everything after 3rd space till last

РЕДАКТИРОВАТЬ : Это можно сделать и в одном регулярном выражении, если ваш инструмент позволяет

^.*?[ ]+.*?[ ]+(.*?)[ ]+(.*)$

РЕДАКТИРОВАТЬ 1 : Если вы хотите, вы можете использовать \K тоже как

^.*?[ ]+.*?[ ]+\K([^ ]+)
...