[英]C# Regex remove href
所以基本上我想刪除href
即:
<td class="name"><a href="/leagues/euw/633">Apdo Dog2</a></td>
因此,我只想要文本中的Apdo Dog2
部分。 任何想法?
這是我的代碼:
private void button1_Click(object sender, EventArgs e)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("SITE");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string final_response = stream.ReadToEnd();
Regex r = new Regex(@"\<[^\>]+\>(.[^\<]+)</[^\>]+\>", RegexOptions.Singleline);
Match m = r.Match(final_response);
richTextBox1.Text = m.Value;
有任何想法嗎? 是的,您應該使用HtmlAgilityPack之類的解析器來提取這些值。
您無需轉義括號字符,這些字符沒有特殊含義。 但是,主要問題是點.
刪除它。 然后使用“ 匹配”引用該組。 組屬性以訪問您的比賽結果。
Regex r = new Regex(@"<[^>]+>([^<]+)</[^>]+>");
Match m = r.Match(final_response);
richTextBox1.Text = m.Groups[1].Value;
注意 :點.
已刪除,並且您使用的是否定類,因此可以刪除dotall修飾符。
唯一的區別是,您將刪除/刪除所有內容,包括括號。
除此之外,請記住,一般共識是不要將RexEx與HTML混合使用:)
這應該工作:
void Main()
{
// your input
String input = @@"<td class=""name""><a href=""/leagues/euw/633"">Apdo Dog2</a></td>";
// temp variables
StringBuilder sb = new StringBuilder();
bool inside = false;
bool delete = false;
// analyze string
for (int i = 0; i < input.Length; i++)
{
// Special case, start bracket
if (input[i].Equals('<')) {
inside = true;
}
// special case, close bracket
else if (input[i].Equals('>')) {
inside = false;
continue;
}
// add if needed
if (!inside)
sb.Append(input[i]);
}
var result = sb.ToString(); // -> holds: "Apdo Dog2"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.