2 регулярных выражения для извлечения номера сборки и названия версии

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

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

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
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Регулярное выражение 1

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

Регулярное выражение 2

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

Разбивка регулярного выражения 1

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

Разбивка регулярного выражения 2

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

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

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

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

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

При попытке использовать регулярное выражение 1 для regex101.com/r/KaFdfn/1 отображается полное совпадение и группа 1. Мне нужно, чтобы оно было таким же, как полное совпадение, если это имеет смысл?

Jeffrey 22.05.2019 11:44

вам нужно извлечь group 1 из вашего языка

rock321987 22.05.2019 11:45

Я не уверен, как это сделать? На данный момент для вывода я ставлю '\0'

Jeffrey 22.05.2019 11:46

используйте \1 для первой группы захвата

rock321987 22.05.2019 11:46

Сразу после того, как я написал свой комментарий, я подумал, что это может быть так просто, и попробовал. Большое спасибо!

Jeffrey 22.05.2019 11:47

круто .. попробуйте одно регулярное выражение в первом редактировании, о котором я упоминал .. \1 для первой группы, \2 для второй группы

rock321987 22.05.2019 11:48

Я поместил обновление в свой пост, потому что вы заставили меня понять группы и то, как я могу манипулировать данными, то, что я хочу делать, теперь изменилось, вы не против взглянуть на Обновление 1?

Jeffrey 22.05.2019 12:23

Почти готово... удалось получить Full и Group 1 с помощью: ^.*?[-][ ]+(.*)$

Jeffrey 22.05.2019 12:26

Я думаю, что сделал это, как вам кажется: ^(.*)[ ][-][ ]+(.*)$

Jeffrey 22.05.2019 12:28

@Джеффри да .. кажется правильным .. но это сильно зависит от вашего ввода .. если какая-то часть этой строки Microsoft Windows Server 2016 Datacenter x64 содержит -, это будет неправильно

rock321987 22.05.2019 12:36

Это не должно делать, но я скоро узнаю, если это вызовет какие-либо проблемы.

Jeffrey 22.05.2019 13:37

Другие вопросы по теме