-1

我需要一个正则表达式来匹配以下内容:

字符串:“Hello #world 这是#party time#”
匹配:“world”和“party time”

在玩正则表达式时,我只能匹配一个或另一个,但不能同时匹配。这甚至可能吗?

4

1 回答 1

1

没有解决方案,您现在设置它的方式。使用 # 作为“止损”与想要匹配非空格单词和空格单词之间存在歧义。问题是空格..它既是有效字符又是无效字符,具体取决于值,并且没有其他方法可以判断哪个是哪个。

你不能把它分解成多个正则表达式。如果您第一次尝试这样做#([^#]+),它将匹配#world#party. 如果您尝试先做#([^#]+)#,它将匹配world it is. 即使您对组合进行负面回顾,#((?:(?<!\b).)+)#您也会匹配world it is #party time

要解决此问题,您必须执行以下任一操作

  1. 将 # 结束分隔符(你称之为“停止间隙”)放在所有短语的末尾,即使是单个单词。然后你可以做#([^#]+)#
  2. 将短语中的空格更改为其他内容(如下划线)。然后你可以做#([^\b]+)(​​这可能会根据你交换空间的内容而有所不同)
于 2013-05-07T23:46:41.883 回答