首页 > 解决方案 > 如果相同的两个逗号之间存在匹配,如何匹配两个逗号之间的所有内容?

问题描述

我有这个字符串..

aa reddit down,spectrum new,comcast outage,sa discord park,asd reddit news,

而这段正则表达式..

(?<=,|^|\s)discord(?=,|$|\s).+?(?=,)

..匹配以下

discord park

虽然我希望它匹配这个..

sa discord park

因此,如果相同的两个逗号之间存在匹配,通常希望两个匹配字符串中两个逗号之间的所有字符。

这看起来很吓人,但我已经把前面的正则表达式放在一起两次,并|在中间放了一个。这是我批准答案的额外要求,因为我希望能够将多个正则表达式放在一起。

(?<=,|^|\s)discord(?=,|$|\s).+?(?=,)|(?<=,|^|\s)reddit(?=,|$|\s).+?(?=,)

这将匹配..

discord parkreddit news

虽然希望它匹配..

as discord parkasd reddit news

标签: regex

解决方案


您可以使用否定字符类,并为两个单词交替使用:

(?<=,|^)[^,]*\b(?:reddit|discord)\b[^,]*

正则表达式演示


推荐阅读