我正在尝试构建正则表达式,从字符串的 end 中删除*
和=
或它们的任意组合,所以我尝试{{1但是它很懒,例如,如果我有字符串"[*=]$"
,那么它将删除this is a dog =*
并保留*
,然后我尝试了正则表达式=
,它完成了这项工作,但我无法理解正则表达式引擎如何与最后一个正则表达式一起工作,换句话说,这个正则表达式如何变得贪婪。
答案 0 :(得分:0)
请注意+
重复前一个标记一次或多次。因此[*=]+
匹配最后一个或多个*
或=
个符号。
在后台发生的事情是,首先[*=]
匹配所有*
或=
符号(匹配连续字符)。一旦正则表达式引擎看到char类旁边存在的+
,它就会开始匹配以下*
或=
符号。最后,一旦它看到行锚$
的结束,除了最后一个匹配之外的所有匹配将被正则表达式引擎丢弃。现在,您离开了最后一场比赛(匹配存在于一行)。