【发布时间】:2019-10-18 07:57:46
【问题描述】:
我有以下字符串:
this is a test string user:testuser,anotheruser hashtag:peach,phone,milk site:youtube.com,twitter.com flair:????bobby????
目前,正则表达式 ([^:\s]+):([^:\s]+) 匹配所有中间有冒号的过滤器(用户、主题标签、站点、风格)。我怎样才能将剩余的"this is a test string" 部分作为另一场比赛?
演示:
【问题讨论】:
-
可能是
/^.*?(?=\s+[^:\s]+:)|([^:\s]+):([^:\s]+)/g,见demo -
@WiktorStribiżew 似乎与初始字符串匹配,但随后与用户、主题标签和站点不匹配(组 1 是冒号前部分,组 2 是冒号后部分)就像我原来的查询一样。
-
@WiktorStribiżew 谢谢!完美运行。如果您将其发布为答案,我会接受。
-
如果没有前瞻,您可以只附加一个替换:
([^:\s]+):([^:\s]+)|^(?:[^:\s]+\s)*,缺点是第一个匹配项不会被修剪到右侧(空白)。
标签: regex regex-group