C#正则提取字符串(一个或多个)

C#正则表达式进行简单的字符串匹配识别
直接上代码:

if (!Regex.IsMatch(comboBox1.Text, @"(高端类|中端类|低端类)"))//产品类型格式验证
{
  MessageBox.Show("产品类型格式不正确!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
  return;
}//------例1

if (!Regex.IsMatch(comboBox2.Text, @"\d(16|32|48|56)"))//线路类型格式验证
{
  MessageBox.Show("线路类型格式不正确!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
  return;
}

例1中只有括号中规定的三个字符串才能通过匹配。例2中除了括号中规定的4个字符串外还有\d代表的整数。
规则表如下:

字  符描  述
\转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
*匹配前面的零次或多次的子表达式
+匹配前面的一次或多次的子表达式
?匹配前面的零次或一次的子表达式
{n}n是一个非负整数,匹配前面的n次子表达式
{n,}n是一个非负整数,至少匹配前面的n次子表达式
{n,m}m和n均为非负整数,其中n<=m,最少匹配n次且最多匹配m次
?当该字符紧跟在其他限制符(,+,?,{*n},{n,},{n,m})后面时,匹配模式尽可能少的匹配所搜索的字符串
.匹配除“\n”之外的任何单个字符
(pattern)匹配pattern并获取这一匹配
(?:pattern)匹配pattern但不获取匹配结果
(?=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串
(?!pattern)负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串
x|y匹配x或y。例如,‘z|food’能匹配“z”或“food”。‘(z|f)ood’则匹配“zood”或“food”
[xyz]字符集合。匹配所包含的任意一个字符。例如,‘[abc]’可以匹配“plain”中的‘a’
[^xyz]负值字符集合。匹配未包含的任意字符。例如,‘[^abc]’可以匹配“plain”中的‘p’
[a-z]匹配指定范围内的任意字符。例如,‘[a-z]’可以匹配’a’到’z’范围内的任意小写字母字符
[^a-z]匹配不在指定范围内的任意字符。例如,‘[^a-z]’可以匹配不在‘a’~‘z”内的任意字符
\b匹配一个单词边界,指单词和空格间的位置
\B匹配非单词边界
\d匹配一个数字字符,等价于[0-9]
\D匹配一个非数字字符,等价于[^0-9]
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符
\s匹配任何空白字符,包括空格、制表符、换页符等
\S匹配任何非空白字符
\t匹配一个制表符
\v匹配一个垂直制表符。等价于\x0b和\cK
\w匹配包括下划线的任何单词字符。等价于‘’[A-Za-z0-9_]’
\W匹配任何非单词字符。等价于‘[^A-Za-z0-9_]’

C# 正则表达式及返回匹配的所有结果
  C# 正则表达式是在 System.Text.RegularExpressions 空间定义的,其中的 IsMatch() 方法用于返回 bool 类型,表示要搜索的字符串与传入的正则表达式是否匹配,如果匹配返回 true, 否则返回 false, 如果想要获取所有的匹配结果,就要调用 Matches,方法,该方法返回 MatchCollection 集合对象,通过遍历集合,即可获取所有的匹配结果。

/// <summary>
    /// 获取正则表达式匹配结果集
    /// </summary>
    /// <param name="value">字符串</param>
   /// <param name="regx">正则表达式</param>
    /// <returns></returns>
    private float[] GetPathPoint(string value, string regx)
    {
        if (string.IsNullOrWhiteSpace(value))
            return null;
        bool isMatch = System.Text.RegularExpressions.Regex.IsMatch(value, regx);
        if (!isMatch)
            return null;
        System.Text.RegularExpressions.MatchCollection matchCol = System.Text.RegularExpressions.Regex.Matches(value, regx);
        float[] result = new float[matchCol.Count];
        if (matchCol.Count > 0)
        {
            for (int i = 0; i < matchCol.Count; i++)
            {
                result[i] = float.Parse(matchCol[i].Value);
            }
        }
        return result;
    }

参考文章:
msdn 正则表达式搜索字符串: https://msdn.microsoft.com/zh-cn/library/ms228595.aspx
JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript
msdn 正则表达式快速参与 https://msdn.microsoft.com/zh-cn/library/az24scfc(v=vs.110).aspx
正则表达式参考: http://ahkcn.github.io/docs/misc/RegEx-QuickRef.htm

C# 正则提取字符串(提取一个或多个)
实例一:

string result = "";
            string str = "大家好! <User EntryTime='2010-10-7' Email='zhangsan@163.com'>张三</User> 自我介绍。";
            Regex regex = new Regex(@"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]*?)'>(?<userName>[\s\S]*?)</User>", RegexOptions.IgnoreCase);
            Match match = regex.Match(str);
            if (match.Success)
            {
                string userName = match.Groups["userName"].Value; //获取用户名
                string time = match.Groups["time"].Value; //获取入职时间
                string email = match.Groups["email"].Value; //获取邮箱地址
                string strFormat = String.Format("我是:{0},入职时间:{1},邮箱:{2}", userName, time, email);
                result = regex.Replace(str, strFormat); //替换内容
                Console.WriteLine(result);
            }

实例二:

    var s = "http://www.baidu.com/articles/2018/3/15/sss.html";
    var reg = new Regex(@"articles/(?<date>\d{4}/\d{1,2}/\d{1,2})/", RegexOptions.IgnoreCase);
    Match _match = reg.Match(s);
    if (_match.Success)
    {
        Console.WriteLine(_match.Groups["date"]);
    }
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seven Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值