我有一个包含大量HTML的tsv文件。
我需要在非.jpg链接的href属性的最后一次正斜杠之后替换%20
。
我在命令行上尝试使用Perl,我需要有关正则表达式的帮助。
我尝试了一些正则表达式,这是在实时测试中(下面的链接):
<a\ [^>]*href="([^"]+(%20)+)[^\.jpg][^\/]"[^>]?>
它仅匹配一个<a>
代码,并仅捕获最后一次出现的%20
。
Here a live test with a sample of tsv.
我可以:
<a href="http://example.com/path/to-some-folder/another%20folder/one%20more520folder/34%20-%20kv34%20-%20tomba%20di%20thumtmose%20iii">text</a>
我必须在最后一个正斜杠后匹配所有%20
并将其替换为-
。
或:
<a href="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.jpg"> <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" /></a>
我必须匹配.jpg的href属性,因此上面的最后一个示例需要保持不变。
我也尝试过这个匹配所有预期的<a>
代码但我不知道如何在最后一个斜杠后捕获所有%20
以便随后应用替换:
<a [^>]*href="([^"]+)[^\.jpg][^\/]"[^>]?>
答案 0 :(得分:2)
答案 1 :(得分:2)
为了在某些分隔符中匹配Sub ForwardSelectedItems()
On Error Resume Next
Dim objItem As Outlook.MailItem
If Application.ActiveExplorer.Selection.Count = 0 Then
MsgBox ("No item selected")
Exit Sub
End If
For Each objItem In Application.ActiveExplorer.Selection
Set objMsg = objItem.Forward()
With objMsg
.Attachments.Add objItem, olEmbeddeditem
.Subject = "example"
.To = "example@example.com"
.Body = “”
.Send
End With
Next
Set objItem = Nothing
Set objMsg = Nothing
End Sub
,您还可以使用%20
运算符(请参阅"Where You Left Off: The \G Assertion"):
您可以使用
\G
指定上一场比赛后的位置。
您可以使用的正则表达式是
\G
替换为
(<a\b[^<]*?|(?<!^)\G)([^\/]*?)%20(?=(?![^\/]*\.jpg">)[^\/"]*">)
这是my demo
在类似Perl的表示法中,它看起来像
\1\2-