为什么
/<.+?> e/.exec("a <b> c <d> e")
Run Code Online (Sandbox Code Playgroud)
(意外地)回归
["<b> c <d> e"]
Run Code Online (Sandbox Code Playgroud)
代替
["<d> e"]
Run Code Online (Sandbox Code Playgroud)
非贪婪的运营商似乎什么都不做......
这可以让你理解惰性运算符的作用:
/<.+?> e/.exec("a <b> c <d> e <f> e")` // -> ["<b> c <d> e", "<f> e"]
/<.+> e/.exec("a <b> c <d> e <f> e")` // -> ["<b> c <d> e <f> e"]
Run Code Online (Sandbox Code Playgroud)
<.+?> e意思是:一旦找到a ,就找到第一个< > e
<.+> e意思是:一旦找到a ,就找到最后一个< > e
在您的具体情况下,您可以简单地使用<[^>]+> e(这更好,因为更快 - 如果可能的话,总是更喜欢X[^X]X符号而不是X.*?X符号)。