我有一个与此类似的非常简单的正则表达式:
HOHO.*?_HO_
有了这个测试字符串...
fiwgu_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO___HO_fbguyev
- 我希望它匹配
_HOHO___HO_
(最短匹配,非贪婪) - 相反,它匹配
_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO___HO_
(最长匹配,看起来很贪婪)。
为什么?我怎样才能让它匹配最短的匹配?
添加和删除?
给出了相同的结果。
编辑- 更好的测试字符串,显示为什么[^HOHO]
不起作用:fiwgu_HOHO_HOHO_HOHOrgh_HOHO_feh_HOHO_H_O_H_O_HO_fbguye
我能想到的可能是它可能多次匹配 - 但只有一个匹配_HO_
,所以我不明白为什么它不采用以 结束的最短匹配_HO_
,丢弃其余的。
我浏览了所有我能找到的标题为“非贪婪的正则表达式行为贪婪”的问题,但它们似乎都有一些其他问题。