Regex 记事本++;在同一行中多次出现的正则表达式替换,赢得了';行不通

Regex 记事本++;在同一行中多次出现的正则表达式替换,赢得了';行不通,regex,replace,Regex,Replace,尝试批量清理大量HTML,将所有的a href=“url”清除,替换为仅a href=“ 在Notepad++中,搜索并替换,我尝试了正则表达式: href=.*" 这仅在每行只有一个ahref=时有效 如果在同一行上有多个ahref=,则我的正则表达式选择的文本以第一个a href=“”开头,接受后面的每个文本字符串,包括其他几个a href=“url”部分,并以最后的“双引号结束 我没能用谷歌搜索到比我典型的正则表达式更好的正则表达式。改用: 由于href属性可以用单引号或双引号括起来,因

尝试批量清理大量HTML,将所有的
a href=“url”
清除,替换为仅
a href=“

在Notepad++中,搜索并替换,我尝试了正则表达式:

href=.*"
这仅在每行只有一个a
href=
时有效

如果在同一行上有多个a
href=
,则我的正则表达式选择的文本以第一个
a href=“
”开头,接受后面的每个文本字符串,包括其他几个
a href=“url”
部分,并以最后的
双引号结束

我没能用谷歌搜索到比我典型的正则表达式更好的正则表达式。

改用:


由于
href
属性可以用单引号或双引号括起来,因此请使用匹配组查看它是用哪个引号括起来的

接下来,使用非贪婪匹配,以便匹配尽可能小的字符串:

(href=)(['"])[^\2]+?\2
然后,将它们替换为

\1\2\2           (or $1$2$2)

忘记提及:替换双引号之间的所有内容也是一样,“.*”尝试将
href\s*=\s*(“[^”]+“[^']+”[^']+')
替换为
href=“”
,考虑到其中一些可能使用单引号。
*
是贪婪的(
*?
是懒惰的)并且将尽可能多地匹配,因为您可能禁用了多行匹配,这就是它失败的原因。在像
abcabc
这样的字符串中,使用像
c.*b
这样的正则表达式,您将得到
cabca
,而
c.*b
将得到
cab
,谢谢HJBotter92,但这不是oth的问题er形式的引号。我完全不知道贪婪的重复问题,因为我自学成才,以前从未遇到过这个问题。今天我学到了一些东西,简单地用*替换*finalstring?我的正则表达式中的finalstring做了诀窍:)啊,谢谢你!我以前从未遇到过这个问题,我也不知道贪婪的重复问题。我今天学到了一些东西:)我刚刚测试过,你用“*?”简单地替换“*”有效:)谢谢,这个答案救了我一天。你只需添加一个?所有问题都解决了,哈哈。。。
\1\2\2           (or $1$2$2)