我需要一个正则表达式来匹配以下内容:
String: "Hello #world,现在是#party time#"
与:"世界","时间"
在使用正则表达式时,我只能匹配一个或另一个,但永远不能匹配两个。这可能吗?
目前没有解决方案。使用#作为"终止间隔"与想要匹配非空格单词和空格单词之间存在歧义。问题是空格…它既是有效字符又是无效字符,取决于值,并且没有其他方法可以区分哪个是哪个。
你不能把它分解成多个正则表达式。如果你首先尝试像#([^#]+)
那样做,它将匹配#world
和#party
。如果您尝试先执行#([^#]+)#
,它将匹配world it is
。即使你在#((?:(?<!'b).)+)#
中加入一个消极的目光,你也会匹配world it is #party time
要解决这个问题,您必须执行
- 在所有短语(甚至是单个单词)的末尾加上#结束分隔符(您称之为"停止间隔")。然后输入
#([^#]+)#
- 将短语中的空格更改为其他内容(如an)下划线)。然后你可以执行
#([^'b]+)
(这可能取决于你要交换的空间)