Regex capture and replace %20 after last forward slash
我有一个 tsv 文件,里面有很多 HTML。
我需要在非 .jpg 链接的 href 属性的最后一个正斜杠之后替换
我正在命令行上使用 Perl,我需要正则表达式的帮助。
我尝试了一些正则表达式,这是在现场测试中(下面的链接):
1 | ]*href="([^"]+(%20)+)[^\\.jpg][^\\/]"[^>]?> |
它只匹配一个
这是一个带有 tsv 样本的实时测试。
我本可以:
1 | text |
我必须匹配最后一个正斜杠之后的所有
或:
1 | <img border="0" src="http://example.com/path/to-some-folder/another%20folder/one%20more520folder/uploads/2012/02/some%20folder/another%20folder/09%20antichi%20egizi%20-%20Tomba%20di%20Tutankhamen%20ante.jpg" width="80" height="92" alt="09 antichi egizi - Tomba di Tutankhamen" /> |
我不能匹配 .jpg 的 href 属性,所以上面的最后一个例子需要保持不变。
我也试过这个匹配所有预期的
1 | ]*href="([^"]+)[^\\.jpg][^\\/]"[^>]?> |
https://regex101.com/r/cS3iB6/2
为了匹配某些分隔符内的
You can use
\\G to specify the position just after the previous match.
你可以使用的正则表达式是
1 | ()[^\\/"]*">) |
替换为
1 | \\1\\2- |
这是我的演示
在类似 Perl 的符号中,它看起来像
1 | s/()[^\\/"]*">)/\\1\\2-/g |
replace %20 after last forward slash of href attributes of non .jpg links
您可以使用以下内容进行匹配:
1 | %20(?=(?:(?!\\.jpg">)[^>\\/])*>) |
并替换为
见演示