正则表达式
发布时间:2020-12-13 21:56:34 所属栏目:百科 来源:网络整理
导读:强烈推荐先看:https://deerchao.net/tutorials/regex/regex.htm 再看: http://www.jb51.net/article/73929.htm http://www.runoob.com/csharp/csharp-regular-expressions.html(b解释错误, 匹配一个单词边界,指单词和空格间的位置) 总结: []表示字符
强烈推荐先看:https://deerchao.net/tutorials/regex/regex.htm 再看: http://www.aspzz.cn/article/73929.htm http://www.runoob.com/csharp/csharp-regular-expressions.html(b解释错误,匹配一个单词边界,指单词和空格间的位置)
总结:
7. 接着说小括号的零宽断言(查询用)
public static void Main()
{
string input = "1851 1999 1950 1905 2003";
string pattern = @"(?<=19)d{2}b";
foreach (Match match in Regex.Matches(input,pattern))
Console.WriteLine(match.Value);
}
分别输出:99 ,50和05
8. 负向零宽断言:如果我们只是想要确保某个字符没有出现,但并不想去匹配它
9. (?#comment)来包含注释。
10.贪婪与懒惰
11,平衡组/递归匹配:尚未研究,如果对xml子节点操作,可能需要用它
实战:
下面是从网址上取数据例子,取每个td节点的值
文本:<tr class=''><td>2017-07-12</td><td class='cGreen'>22.84</td><td class='cRed'>23.03</td></tr>。。。。。
Pattern:(<td>|<td class='cGreen'>|<td class='cRed'>)(.{1,12})</td>
或者采用懒惰的方式(*?):
var pattern = @"(<td[wW]*?>)(.*?)</td>";
最初pattern没有用|来限定<td>的内容,而用的*,造成跳过中间所有的内容,直接到文本最后一个</td>,匹配的个数只有一个,
花了好长的时间才解决。。。
心得:不要轻易用*或+,它可能过滤掉中间所有的信息。 如果结果不是预期,可以将条件限定的更具体些,再测试。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |