2个正则表达式以提取内部版本号和版本名称

时间:2019-05-22 09:36:40

标签: regex pcre

我真的很难理解正则表达式。

我有这个字符串:

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 个答案:

答案 0 :(得分:2)

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

正则表达式2细分

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

编辑:如果您的工具允许,也可以在单个正则表达式中完成

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

编辑1 :如果需要,您也可以像这样使用\K

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