Я действительно изо всех сил пытаюсь понять регулярные выражения.
У меня есть эта строка:
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
^ #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([^ ]+)
вам нужно извлечь group 1
из вашего языка
Я не уверен, как это сделать? На данный момент для вывода я ставлю '\0'
используйте \1
для первой группы захвата
Сразу после того, как я написал свой комментарий, я подумал, что это может быть так просто, и попробовал. Большое спасибо!
круто .. попробуйте одно регулярное выражение в первом редактировании, о котором я упоминал .. \1
для первой группы, \2
для второй группы
Я поместил обновление в свой пост, потому что вы заставили меня понять группы и то, как я могу манипулировать данными, то, что я хочу делать, теперь изменилось, вы не против взглянуть на Обновление 1?
Почти готово... удалось получить Full и Group 1 с помощью: ^.*?[-][ ]+(.*)$
Я думаю, что сделал это, как вам кажется: ^(.*)[ ][-][ ]+(.*)$
@Джеффри да .. кажется правильным .. но это сильно зависит от вашего ввода .. если какая-то часть этой строки Microsoft Windows Server 2016 Datacenter x64
содержит -
, это будет неправильно
Это не должно делать, но я скоро узнаю, если это вызовет какие-либо проблемы.
При попытке использовать регулярное выражение 1 для regex101.com/r/KaFdfn/1 отображается полное совпадение и группа 1. Мне нужно, чтобы оно было таким же, как полное совпадение, если это имеет смысл?