对于多行文本,我必须将所有包含文本(狗)但不包含其他文本(猫)的<img>
标记替换为
有这样的文字:
<img black
dog>
<img dog white cat>
<img black dog>
<img cat and dog>
<img red fox>
<img black dog>
应找到以下文本:
有很多方法可以使用^
和$
来为单行正则表达式找到它,但是我不能使用多行来做到这一点。
我的第一次尝试是以这种方式使用单行选项(/s
)
/<img ((?!cat).)*?(dog)>/gs
但是它选择的是最后一条狗(赤狐)之前的标签,因为它不够贪婪。
然后我使用?
使它没有设置/s
的贪婪(添加\s\S
):
/<img ((?!cat)[\s\S.])*?(dog)?>/g
即使没有狗,我也会再次找到第五个标签(<img red fox>
)。
如何挑选3只没有猫或狐狸的狗?
链接到我在regex101中的尝试:https://regex101.com/r/AGgb4z/1