C# Regex 正则基础

元字符:

基本元字符

. 表示任意一个非换行字符

 [ ] 集合匹配。表示匹配一个出现在方括号中的一个字符 

 |  或 a|b 优先级最低

 ()  同数学,提高优先级

限定元字符

* 紧跟在 * 前面的字符出现任意次

+ 紧跟在 + 前面的字符出现任意次,但至少1次

?  紧跟在 ? 前面的字符出现1次或者不出现

{ n }  紧跟前面的字符,出现n次   如[01234556779]{11}  出现0-9的数字出现11次

{ n, }  +相当于{1, } *相当于 {0, } 

{ n,m }  紧跟前面的字符,出现至少n次  ,最多m 次

首尾元字符

^ 以^后面的字符开始

$ 以$前面的字符结尾

简写形式

\d  查找数字字符

\D 查找非数字字符

\w  查找单词字符。 注:在C#中包括中文

\W 查找非单词字符。

\s  查找空白字符。

\S 查找非空白字符。


 写正则:
首先明确要做什么?
找规律,看看那些是必须有的,哪些是不动
利用.、+、()等进行写正则
然后再验证、再修改

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

身份证[0-9]{17}[X0-9]|[0-9]{15}

邮箱: [a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9]+)+

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

使用C#操作正则表达式

->命名空间:System.Text.RegularExpression;

->Regex

bool IsMatch(正常字符串,正则表达式);

Match Match(正常字符串,正则表达式);

MatchCollection Matchs(正常字符串,正则表达式);

string Replace(正常字符串,正则表达式,替换字符串);

C#中使用MatchCollection 收集到每一个匹配到的结果,如: 

MatchCollection mc = Regex.Matches(str, @"〔(.+)〕");

//str本将要匹配的文本,后面为 正则表达式。

遍历MatchCollection 即可得到每一个匹配的结果

foreach (Match m in mc)
            {
                string s = m.Groups[1].Value;
               //string tmp = m.ToString().Replace("〔", "").Replace("〕", "");
            }
->可以直接使用m,将不需要的内容进行替换

->或者使用分组,匹配正则表达式中()中的值。

Regex.Replace(string input ,string pattern,string replacement)
在指定的字符串内,使用指定的替换字符串替换与正则表达式匹配的字符串

string str = "如果你想学习.NET那么就赶快点击http://net.itcast.cn,这里有公开课,可以点击http://www.itcast.cn";
string res = Regex.Replace(str, @"(http.+?itcast\.cn)", "<a href=\"$0\">$1</a>");
File.WriteAllText("1.html", res, Encoding.Default);
//替换后网址被a标签包裹,变成超链接<pre name="code" class="csharp">
//其中涉及到 $1 为正则表达式分组匹配到的第1项结果,根据需要还可以使用$0,$1,$2……


Regex.Replace(string input ,string pattern,MatchEvaluator evaluator)
在指定的字符串内,使用System.Text.RegulatorExpressions.MatchEvaluator委托返回的字符器替换与正则表达式匹配的字符串

static void Main(string[] args)
{
string text = "i have 200 dollars";
string result = Regex.Replace(text, @"\d+", new MatchEvaluator(CapText));
Console.WriteLine("result=[" + result + "]");
Console.ReadKey();
}
static string CapText(Match m)
        {
            string x = m.ToString();
            string result = (int.Parse(x) * 2).ToString();
            return result;
        }
//new MatchEvaluator(CapText)使用委托操作与正则表达式匹配的数据,并返回。用于替换与正则表达式匹配的字符串
//结果: i have 400 dollars



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值