一道练习题引申出来的知识点(二) 正则表达式

什么是正则表达式:(个人理解 没有百度 高手勿拍)
所谓正则表达式 就是在程序中需要判断或匹配某个字符串时用的一个表达式
比如说 判断用户输入的是否是一个正确的身份证号、判断是否是一个有效的URl连接等
总之 他的功能非常的强大 只有想不到 没有配不到
先说一下那道题中我是怎么匹配的
先说百家姓 匹配百家姓非常的简单 在txt中 百家姓是的格式是 (赵)、(钱)、(孙)、(李)...
每一个姓氏都用()括起来 我用的正则是  \((\w)\) 
下面来分析一下 (非常非常的简单)
 \(:代表左括号
\) :代表右尖括号
(\w):代表中间的姓氏:

好了 那道题中的正则表达式就说怎么说 还是上笔记
判断是否匹配
string regex = @"[\u4e00-\u9fa5]+"; // 要匹配的正则 此处是匹配汉字
string str = Console.ReadLine();

while (true)
{
    if (Regex.IsMatch(str, regex)) // 判断是否匹配
    {
        Console.WriteLine("字符串匹配");
    }
    else
    {
         Console.WriteLine("不匹配");
    }
    str = Console.ReadLine();
}

捕获单个字符串
string str = @"大家好呀,hello, 20101010年10月10日是个好日子。恩,9494.吼吼!886";
string regex = @"\d+"; // 匹配数字正则
Match m = Regex.Match(str, regex); // 捕获单个字符
if (m.Success) // 判断是否捕获成功
{
    Console.WriteLine(m.Value); // 捕获第一个数字的值
    Console.WriteLine(m.Index); // 捕获第一个数字的开始位置
    Console.WriteLine(m.Length); // 捕获第一个数字的长度
}

捕获多个字符串
string str = @"大家好呀,hello, 20101010年10月10日是个好日子。恩,9494.吼吼!886";
string regex = @"\d+"; // 匹配数字正则
MatchCollection ms = Regex.Matches(str, regex); // 循环匹配多个字符串

foreach (Match m in ms) // 循环匹配多个字符串
{
   Console.WriteLine(m.Value);
   Console.WriteLine(m.Index);
   Console.WriteLine(m.Length);
}

获取网页中的HTML代码 using System.Net;
WebClient wc = new WebClient(); // 提取网页上html代码
wc.Encoding = Encoding.Default; // 设定编码格式
string html = wc.DownloadString("
http://www.baidu.com/"); // 将网页的html代码放在html字符串中

字符串的分组
string str = @"
                姓名:张三,性别:男,年龄:20;
                姓名:王五,性别:女,年龄:19";

string temp = "@name='{0}',gender='{1}',age='{2}'";
string regex = @"姓名:(\w+),性别:([男女]),年龄:(\d+)";

MatchCollection mc = Regex.Matches(str, regex);
foreach (Match m in mc) // 开始分组
{
                Console.WriteLine(string.Format(temp,m.Groups[1],m.Groups[2],m.Groups[3]));
}

字符集合之间的大小关系
MatchCollection
Match
Group
Captrue

贪婪模式与非贪婪模式(给+,*设定范围) ?
string str = @"<p>第一自然段</p><p>第二自然段</p>";

string regex = @"<p>(.+)</p>"; // 贪婪模式 得到一个值 <p>第一自然段</p><p>第二自然段</p>
string regex = @"<p>(.+?)</p>"; // 非贪婪模式 得到两个值 <p>第一自然段</p> 和 <p>第二自然段</p>

正则表达式的替换分组 Replace $1,$2
// 输出代密码的邮箱地址
string
emile=@"fdsfdfdg@123.com";
string
regex=@"(\w{2})(\w+)(@\w+)";
string s = Regex.Replace(emile,regex,"$1****$3");

// 输出2012/6/1
string str = "2012年6月1日";
string regex = @"(\d+)年(\d+)月(\d+)日";
string s = Regex.Replace(str, regex, "$1/$2/$3");

关于正则就说这么多 以上我自己总结的一些常用的方法以及各个用法的例子
更多的正则表达式网上全是 这里就不多少了 毕竟上面的才是我原创的

 

下一篇文章我会介绍 泛型集合的使用 
 

(作者注释:由于我的笔记是.doc格式的 所有的标题都有超链接以及标题颜色 如果直接复制过来的话会有格式不支持的情况 为了统一 我在全部转换成了txt  所以会没有颜色 希望大家见谅)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值