如何使用 C# 正则表达式模式提取所需的组
How to extract required groups using C# Regular Expression pattern
我正在学习正则表达式。我正在尝试使用以下正则表达式
^(?<type>\W?\w+)(?<middle>\s\w+)?\s(((?<seconds>\d+)[s-]?)?)\s?(?<body>.+?)$
我要匹配的示例字符串是
IDCH 测试测试 15s 发现 Spring 喜欢你发现 Quelle 的机会! Fevr16
我想要以下输出:
类型:IDCH
中:测试
秒:15s
正文:发现.....
我使用上面的模式没有得到预期的输出。任何人都可以帮助我的正则表达式模式有什么问题吗?
这是我目前得到的:
类型:IDCH
中间:测试
秒:
正文:测试 15s .......
谢谢
为了解析您非常具体的输入字符串,这为我完成了工作:
^(?<type>\W?\w+)(?<middle>(\s\D+)*)?\s(?<seconds>\d+s)?\s?(?<body>.+?)$
当您使用 \D
时,中间部分会捕获除数字以外的任何垃圾
(?<middle>(\s\D+)*)?
这让秒有机会匹配数字与 \d+
(?<seconds>\d+s)?
编辑:
要提取秒数,您应该寻找一个以 space 开头并紧跟 s
的数字
^(?<type>\W*\w*)(?<middle>(\s\w+)*)(?<seconds>\s\d+s)\s(?<body>.+?)$
我正在学习正则表达式。我正在尝试使用以下正则表达式
^(?<type>\W?\w+)(?<middle>\s\w+)?\s(((?<seconds>\d+)[s-]?)?)\s?(?<body>.+?)$
我要匹配的示例字符串是
IDCH 测试测试 15s 发现 Spring 喜欢你发现 Quelle 的机会! Fevr16
我想要以下输出:
类型:IDCH
中:测试
秒:15s
正文:发现.....
我使用上面的模式没有得到预期的输出。任何人都可以帮助我的正则表达式模式有什么问题吗?
这是我目前得到的: 类型:IDCH
中间:测试
秒:
正文:测试 15s .......
谢谢
为了解析您非常具体的输入字符串,这为我完成了工作:
^(?<type>\W?\w+)(?<middle>(\s\D+)*)?\s(?<seconds>\d+s)?\s?(?<body>.+?)$
当您使用 \D
(?<middle>(\s\D+)*)?
这让秒有机会匹配数字与 \d+
(?<seconds>\d+s)?
编辑:
要提取秒数,您应该寻找一个以 space 开头并紧跟 s
^(?<type>\W*\w*)(?<middle>(\s\w+)*)(?<seconds>\s\d+s)\s(?<body>.+?)$