我需要一个正则表达式来匹配以下内容:
字符串:“你好#world是#party time#”
匹配:“世界”和“派对时间”
在玩正则表达式时,我只能匹配其中一个但不能同时匹配。这甚至可能吗?
答案 0 :(得分:1)
目前没有解决方案,现在就设置它的方式。使用#作为“停止间隙”与想要匹配非间隔单词和间隔单词相比,存在歧义。问题是space..it是一个有效字符和无效字符,具体取决于值,并且没有其他方法可以判断哪个是哪个。
你无法将其分解为多个正则表达式。如果您首先尝试#([^#]+)
,则会匹配#world
和#party
。如果您首先尝试#([^#]+)#
,则会匹配world it is
。即使您在混合#((?:(?<!\b).)+)#
中添加负面观察,也会匹配world it is #party time
要解决此问题,您必须执行
#([^#]+)#
#([^\b]+)
(这可能会根据你换空间的内容而有所不同)