Regex 正则表达式问题

Regex 正则表达式问题,regex,greedy,Regex,Greedy,我在测试一个正则表达式,我对匹配结果很好奇 符号*是绿色的,在我的选项中,结果应该只匹配1个结果, 如下: <script language=javascript> ati('#', '../../../UpLoadFile/Product/20101010162153846.jpg', '加厚青色围脖'); } </script> <script language=javascript> ati ati(“#”和“../../../UpLoadFile/

我在测试一个正则表达式,我对匹配结果很好奇

符号*是绿色的,在我的选项中,结果应该只匹配1个结果, 如下:

<script language=javascript>
ati('#', '../../../UpLoadFile/Product/20101010162153846.jpg', '加厚青色围脖');
}
</script>
<script language=javascript>
ati

ati(“#”和“../../../UpLoadFile/Product/20101010162153846.jpg”加厚青色围脖');
}
ati

但是结果并不是我所期望的,任何人都可以帮我解释一下,谢谢?

*
是贪婪的,但它只匹配
\s
,这意味着空白字符。如果你想匹配ati最后一次出现之前的所有内容,请使用
*


如果此环境不匹配换行符,可能您可以通过在
(.|\n)*

上匹配来包含它们,因为您只匹配换行符的开头,所以它无法匹配您想要的内容

贪婪是指当你在两个标记之间寻找任意的东西,而你在第一个标记和最后一个标记之间得到所有东西,即

/<p>.*<\/p>/
/*/

通常,当您这样做时,您需要所有
p
元素。但是如果没有ungreedy
*?
U
标志,您将获得第一个实例和最后一个实例之间的所有内容。

因此,要将此答案打包到正则表达式中,我想海报可能需要
/\s*ati.*/
这是使
匹配任何内容的常用方法-包括换行符是为了设置点匹配所有开关(例如,
/.*/s
(?s)。*
--在大多数情况下是
s
,但Ruby使用
m
)。在JavaScript中,没有点匹配所有模式,最好使用
[\s\s]*