我正在寻找一些帮助来识别来自HTML编码的字符串的模式。
如果我有一个HTML编码字符串,如:
string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>"
我需要提取单词 [[@ Code1]],[@ Code2],[[@ Code3]] ,这是动态的,他们的计数是未知的。这些单词已用于替换提供的HTML文本中的其他值。
我想识别模式 [[@ 某些]] 并填充数组等中的所有匹配项,以便我可以处理这些值以获取相关的稍后来自数据库的值。
答案 0 :(得分:4)
string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>";
var input = HttpUtility.HtmlDecode(strHTMLText);
var list = Regex.Matches(input, @"\[\[@(.+?)\]\]")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
答案 1 :(得分:0)
在有人使用正则表达式解决方案之前,为了好玩,我为你做了这个:
string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>";
IEnumerable<string> arr = strHTMLText.Split(new char[] {'['};
List<string> output = new List<string>();
foreach(var item in arr)
{
string placeHolder = item.Substring(0,item.IndexOf("]");
output.Add(placeHolder);
}
将输出变为数组:
output.ToArray();
答案 2 :(得分:0)
您可以使用正则表达式。
尝试使用此表达式
Regex exp = new Regex("\[.+?\]")
MatchCollection mc = exp.matches(<Your string here>);
foreach(Match m in mc)
{
String code = m.value;
}
我还没有测试过这段代码,它是一个快速而又脏的伪代码,所以请耐心等待。