正则表达式的句子语法

时间:2018-09-25 12:56:01

标签: regex

我正在尝试将字符串分成与特定语法匹配的不同部分。

我用作示例的字符串是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

2 个答案:

答案 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组以获得所需的输出。

Connectivity Plugin

相关问题