[英]Regex to match anchor with # in href for .NET
我正在嘗試使用正則表達式匹配和替換錨標記。 我到目前為止所擁有的是:
"(<a href=['\"]?([\\w_\\.]*)['\"]?)"
這種方法的問題在於它無法捕獲其值也包含#的href。 我試過了
"(<a href=['\"]?([\\w_\\.#]*)['\"]?)"
和
"(<a href=['\"]?([\\w_\\.\\#]*)['\"]?)"
沒有成功。
我究竟做錯了什么?
謝謝
我不認為這個問題是與#
(正常工作對我來說),但缺少其他網址字符,如-
/
, :
等。
這樣的正則表達式如何:
<a href=("[^"]+"|'[^']+'|[^ >]+)
注意:如果可能,請對有效的html使用其他解析DOM方法。
<a href=(('|")[^\2]+?\2|[^>]+)
如果只想替換錨定部分,請使用字符串操作。 它們更簡單,更快
var parts = "http://someurl.com#hashpart".Split("#");
// yields "http://someurl.com" and "hashpart" as array.
// you may want to check if the result has length of two
// if it does :
var newUrl = string.Format("{0}#{1}" parts[0], "some replacement for hashpart");
如果您的URL包含多個哈希,請嘗試使用string.Substring在第一個井號標簽處進行拆分。
var url = "http://someurl.com#hash#hashhash";
var hashPos = url.IndexOf("#");
var urlPart = url.Substring(hashPos);
var hashPart = url.Substring(hashPos +1, url.length - hashPos -1);
應該可以工作,無需驗證就可以寫出來,也許您必須折騰大約+/- 1才能獲得正確的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.