我正在尝试将字符串分成与特定语法匹配的不同部分。
我用作示例的字符串是Username 5/5, Version: 1.0 This is a custom message Sep 25, 2018
。
当前,我有这个正则表达式(\w+) ([0-9]\/[0-9]), (\w+): ([0-9][.][0-9][.]?[0-9]?)
,它为我提供了用户名,5/5
,单词version
和版本1.0
。
首先,如何忽略(\w+)
?因为它将一直是版本,所以我只需要后面的数字。
第二个问题,是否可以在版本之后获得大消息,然后在版本之后获得日期?
需要的输出:
Username
5/5
1.0
This is a custom message
Sep 25, 2018
答案 0 :(得分:3)
您可以使用
/^(\w+)\s+(\d+\/\d+),\s+\w+:\s*(\d+(?:\.\d+){1,2})\s*(.*?)\s*([a-zA-Z]+\s*\d{1,2},\s*\d{4})$/
请参见regex demo
详细信息
^
-字符串的开头(\w+)
-第1组(用户名):一个或多个字母,数字或_
\s+
-超过1个空格(\d+\/\d+)
-第2组(5/5
),\s+
-逗号和1个以上的空格\w+:
-1个以上的字符字符,后跟:
\s*
-超过0个空格(\d+(?:\.\d+){1,2})
-第3组(版本号):
\d+
-1个以上数字(?:\.\d+){1,2}
-.
的1或2个序列,后跟1个数字\s*
-超过0个空格(.*?)
-第4组(消息):任意0个以上的字符,数量尽可能少\s*
-超过0个空格([a-zA-Z]+\s*\d{1,2},\s*\d{4})
-第4组(日期):
[a-zA-Z]+
-1个以上ASCII字母\s*
-超过0个空格\d{1,2}
-1到2位数字,\s*
-逗号和0+空格\d{4}
-4位数字$
-字符串的结尾。答案 1 :(得分:2)
尝试(.*)\s(\d\/\d),\s*Version:\s*(\d+\.\d+)\s*(.+?)\s*(\w{3} \d{1,2}, \d{4})
捕获1,2,3,4,5组以获得所需的输出。