我有一个非常大的字符串(HTML),在这个HTML中有特殊的标记,其中所有标记都以"#"开头,以"#"结尾
简单的例子
<html>
<body>
<p>Hi #Name#, You should come and see this #PLACE# - From #SenderName#</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我需要一个能够检测这些令牌的代码并将其放入列表中.0 - #Name#1 - #Place#2 - #SenderName#
我知道我可以使用正则表达式,无论如何你有一些想法吗?
Joh*_*per 11
是的,您可以使用正则表达式.
string test = "Hi #Name#, You should come and see this #PLACE# - From #SenderName#";
Regex reg = new Regex(@"#\w+#");
foreach (Match match in reg.Matches(test))
{
Console.WriteLine(match.Value);
}
Run Code Online (Sandbox Code Playgroud)
你可能已经猜到了\ w表示任何字母数字字符.+表示它可能出现1次或更多次.你可以在这里找到更多信息msdn doc(for .Net 4.你也会在那里找到其他版本).
Pab*_*ruz 10
你可以试试:
// using System.Text.RegularExpressions;
// pattern = any number of arbitrary characters between #.
var pattern = @"#(.*?)#";
var matches = Regex.Matches(htmlString, pattern);
foreach (Match m in matches) {
Console.WriteLine(m.Groups[1]);
}
Run Code Online (Sandbox Code Playgroud)
答案受到了这个 SO问题的启发.