Javascript 正则表达式匹配关键字,后跟任何内容,但在下一个关键字处停止

Javascript 正则表达式匹配关键字,后跟任何内容,但在下一个关键字处停止,javascript,regex,Javascript,Regex,我想在ThisantThingThatAnything中匹配ThisAnything和ThatAnything(两个匹配项) 到目前为止,我已经得到了/(?:这个|那个)(?:.*)/g,但这将匹配这个和任何东西都匹配(一个匹配,但我想要两个)。我如何做到这一点?谢谢你想要一个勉强的量词,*?;因此,您的正则表达式变为(This | That)(.*)使用正向前瞻并在两组中捕获两个子字符串: (This.*(?=This | That |\b)That.*(?=This | That |\b))

我想在
ThisantThingThatAnything
中匹配
ThisAnything
ThatAnything
(两个匹配项)


到目前为止,我已经得到了
/(?:这个|那个)(?:.*)/g
,但这将匹配
这个和任何东西都匹配(一个匹配,但我想要两个)。我如何做到这一点?谢谢

你想要一个勉强的量词,
*?
;因此,您的正则表达式变为
(This | That)(.*)

使用正向前瞻并在两组中捕获两个子字符串:

(This.*(?=This | That |\b)That.*(?=This | That |\b))

结果:

MATCH 1
1.  [0-11]  `ThisAnthing`
MATCH 2
1.  [11-23] `ThatAnything`
split(/(?=This | That)/g)
应该可以做到:

s=“thisanthingthattanythingthattmorethismore”
a=s.split(/(?=This | That)/g)

document.write(a)
这可能行得通,稍后再试。谢谢,这启发了我:你说的“可能有用”是什么意思?它确实适用于您的测试数据。如果您的实际用例不同,请发布它。不要说它不工作。。。只是说我还没有测试过,它正在工作。但我的问题是如何使用正则表达式来实现这一点,所以我接受了@Stribizev的答案。谢谢你的时间:当我遇到更复杂的情况时,这个就失败了/
当我有字符串时只得到两个匹配项
thisanfewthawfewfwethisfewfewfewfewfewfethethisfeewfethisffewfewfewfe
期望五个。我的问题不是很清楚,但是我前面的例子有意义吗?这里有一个正则表达式,它将返回5个匹配项:
(This.*(?=This.\that.\b)that.*(?=This.\124; that.\b))
。示例:我明白了:+1:这是前瞻和非贪婪的一个很好的用法。你能更新你的答案吗?我会接受的。谢谢。@stevemao:更新了。快乐编程!