我正在学习正则表达式。我正在尝试使用以下正则表达式
^(?<type>\W?\w+)(?<middle>\s\w+)?\s(((?<seconds>\d+)[s-]?)?)\s?(?<body>.+?)$
我想要匹配的示例字符串是
IDCH测试15s发现Spring Love你发现Quelle的机会! Fevr16
我想要以下输出:
输入:IDCH
中间:测试测试秒:15秒
身体:发现.....
我没有使用上面的模式获得预期的输出。任何人都可以帮助我的正则表达式模式出错吗?
这是我目前得到的: 类型:IDCH
中间:测试秒:
body:tes 15s ........
由于
答案 0 :(得分:2)
要解析你非常具体的输入字符串,这对我来说很有意义:
^(?<type>\W?\w+)(?<middle>(\s\D+)*)?\s(?<seconds>\d+s)?\s?(?<body>.+?)$
当您使用\D
(?<middle>(\s\D+)*)?
让秒数有机会将数字与\ d +
匹配(?<seconds>\d+s)?
修改
提取您应该查找以空格开头并且后面跟着s
^(?<type>\W*\w*)(?<middle>(\s\w+)*)(?<seconds>\s\d+s)\s(?<body>.+?)$