正则表达式,查找两个分隔符之间的所有单词


Regular expression, find all words between two delimiters

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

String: "Hello #world,现在是#party time#"
:"世界","时间"

在使用正则表达式时,我只能匹配一个或另一个,但永远不能匹配两个。这可能吗?

目前没有解决方案。使用#作为"终止间隔"与想要匹配非空格单词和空格单词之间存在歧义。问题是空格…它既是有效字符又是无效字符,取决于值,并且没有其他方法可以区分哪个是哪个。

你不能把它分解成多个正则表达式。如果你首先尝试像#([^#]+)那样做,它将匹配#world#party。如果您尝试先执行#([^#]+)#,它将匹配world it is。即使你在#((?:(?<!'b).)+)#中加入一个消极的目光,你也会匹配world it is #party time

要解决这个问题,您必须执行

  1. 所有短语(甚至是单个单词)的末尾加上#结束分隔符(您称之为"停止间隔")。然后输入#([^#]+)#
  2. 将短语中的空格更改为其他内容(如an)下划线)。然后你可以执行#([^'b]+)(这可能取决于你要交换的空间)