Regex 正则表达式在第一个双引号处停止

Regex 正则表达式在第一个双引号处停止,regex,string,Regex,String,这是我的绳子 ”您可以创建与这两个组匹配的捕获组 (name=\".*?\")\s*(value=\".*?\") 演示: 稍微改变一下,您的正则表达式就可以运行了 name\s*=\s*['\"].*?['\"] ^ 为什么你的正则表达式没有按你想要的方式工作。 所以本质上,量词是贪婪的。将尝试匹配尽可能多的字符 因此,通过添加?我们使它变得懒惰,这意味着它现在将尝试尽可能少地匹配字符 如果您想将两个正则表达式连接在一起 (name=\".*?\")\

这是我的绳子
”您可以创建与这两个组匹配的捕获组

(name=\".*?\")\s*(value=\".*?\")
演示:


稍微改变一下,您的正则表达式就可以运行了

name\s*=\s*['\"].*?['\"]
                  ^
为什么你的正则表达式没有按你想要的方式工作。 所以本质上,量词是贪婪的。将尝试匹配尽可能多的字符

因此,通过添加我们使它变得懒惰,这意味着它现在将尝试尽可能少地匹配字符

如果您想将两个正则表达式连接在一起

(name=\".*?\")\s*(value=\".*?\")|(value=\".*?\")\s*(name=\".*?\")

这是一个很好的方法。但考虑到字符串可能是另一种方式,比如value=”“name=“mode”,这可能不起作用?请将其设置为可选,
(name=\“*?\”))(value=\“*?\”
这是我想要的工作方式。因此,理论是,通过让它懒惰,它找到了。*然后找到['\']然后,因为它懒惰,它不会再去搜索了?对吗?@Salam.MSaif是的。你可以在这里读到更多关于它的信息@Salam.MSaif,这是非常复杂的,没有任何理由。我的答案更清晰、更直截了当,这也是这个答案复制的第二个案例。@SufiyanGhori
(name=\“*?\”)(value=\“*?\”)(value=\“*?\”)
在你的情况下,它也会匹配这个。我想op不需要这个?