相关疑难解决方法(0)

正则表达式中最短的匹配结束

给定一个输入字符串,fooxxxxxxfooxxxboo我正在尝试编写一个匹配的正则表达式,fooxxxboo即从第二个 foo 开始到最后一个 boo。

我尝试了以下

foo.*?boo 匹配完整的字符串 fooxxxxxxfooxxxboo

foo.*boo 也匹配完整的字符串 fooxxxxxxfooxxxboo

我读了这篇Greedy vs. Reluctant vs. Possessive Quantifiers并且我理解它们的区别,但我试图从匹配正则表达式的末尾匹配最短的字符串,即类似于要从后面评估的正则表达式。有什么办法可以只匹配最后一部分?

regex regex-greedy

7
推荐指数
1
解决办法
2118
查看次数

Python re.sub使用非贪婪模式(.*?)和字符串结尾($)它变得贪婪!

码:

str = '<br><br />A<br />B'
print(re.sub(r'<br.*?>\w$', '', str))
Run Code Online (Sandbox Code Playgroud)

它应该返回<br><br />A,但它返回一个空字符串''!

有什么建议吗?

python regex regex-greedy

6
推荐指数
1
解决办法
4622
查看次数

为什么这么简单。*?非贪婪的正则表达式是贪婪的吗?

我有一个非常简单的正则表达式与此类似:

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_,而丢弃了其余匹配。

我已经浏览了所有标题为“非贪婪正则表达式贪婪”之类的问题,但它们似乎都存在其他问题。

javascript regex non-greedy

3
推荐指数
2
解决办法
751
查看次数

标签 统计

regex ×3

regex-greedy ×2

javascript ×1

non-greedy ×1

python ×1