这是一个可以动态构建的字符串示例。
{Static String} <a href="{Dynamic Value}"><b>{Dynamic Value 2}</b></a>
example of static text <a href="http://www.exampleurl.com">example value</a>
如何在 C# 中使用 Regex 查找 {Dynamic Value 2} 或示例值?
你会使用这样的东西:
using System.Text.RegularExpressions;
private string ExtractString(string sourceString)
{
// (?<=string) is positive look-behind where you search for string before the match.
// .* is all characters in between.
// (?=string) is positive look-ahead where you search for string after the match.
string pattern = "(?<=<a.*?>).*(?=</a)";
Match match = Regex.Match(sourceString, pattern);
return match.Value;
}
当然,您应该实现某种异常处理机制。
请注意,这将返回
<b>{Dynamic Value 2}</b>
如果解析
<a href="{Dynamic Value}"><b>{Dynamic Value 2}</b></a>
如果需要,您可以使用其他正则表达式模式进一步处理字符串。
试试这个,你会得到你想要的结果。
string Actualstring = "{static string}<a href='{Dynamic Value}'><b>{Dynamic Value 2}</b></a>" string prevSplitBy = {static string};string desiredstring="";
string FirstSplitBy = "<b>";
string SecondSplitBy = "</b>";
Regex regexprevSplit = new Regex(prevSplitBy );Regex regexFirstSplit = new Regex(FirstSplitBy);
Regex regexSecondSplit = new Regex(SecondSplitBy);
string[] StringprevSplit = regexprevSplit.Split(Actualstring );string[] StringFirstSplit = regexFirstSplit.Split(StringprevSplit[1] );
string[] StringSecondSplit = regexSecondSplit.Split(StringFirstSplit[1]); if(StringSecondSplit!=null){ for(int i=0 ; i <StringSecondSplit.count-1;i++)desiredstring=desiredstring+StringSecondSplit[i] }
desiredstring
会有你想要的字符串。
{Static String} <a href="{Dynamic Value}"><b>{Dynamic Value 2}</b></a>
用类似的东西很好地解析
Regex parser = new Regex(
@"*?\<a href\=\""(?<value1>[^\""]*)\""\>\<b\>(?<value2>[^\<]*)\<\/b\>\<\/a\>");
XElement el = XElement.Parse("<a>your long html string to parse</a>").Element("a");
string v1 = el.Attribute("href").Value;
string v2 = el.Element("b").Value;
stackoverflow 上的人们似乎建议使用http://htmlagilitypack.codeplex.com/来解析 html 并从中提取值。它比使用正则表达式更容错。如果使用正则表达式,如果您搜索的字符串中有任何更改,则必须更改正则表达式。