public class MatchHelper
{
    /// <summary>
    /// 正则匹配结果集中的第一个匹配项
    /// </summary>
    /// <param name="regularString">进行匹配的字符串集</param>
    /// <param name="regularExpressions">正则表达式规则</param>
    /// <param name="isSubScalar">isSubScalar默认值为 1 ,为 0 时匹配第一项不为空的项,为 1 时匹配第一项不为空的子项,该参数可以忽略。</param>
    /// <returns></returns>
    internal static string MatchScalar(string regularString, string regularExpressions, int isSubScalar = 1)
    {
        string returnVal = "";
        try
        {
            MatchCollection M = Regex.Matches(regularString, regularExpressions);
            foreach (Match m in M)
            {
                for (int i = isSubScalar; i < m.Groups.Count; i++)
                {
                    returnVal = m.Groups[i].Value;
                    if (returnVal == "")
                    {
                        continue;
                    }
                    else
                    {
                        return returnVal;
                    }
                }
            }
            return returnVal;
        }
        catch (Exception ee)
        { 
            return "";
        }
    }
    /// <summary>
    /// 根据正则表达式匹配出所有的符合条件的字符串。
    /// <para>结果将以 DataTable 类型返回。</para>
    /// </summary>
    /// <param name="regularString">待匹配的字符集合。</param>
    /// <param name="regularExpressions">正则表达式。</param>
    /// <param name="isSubDt">isSubDt默认值为 1 ,为 0 时匹配所有符合条件项,为 1 时匹配所有符合条件子项,该参数可以忽略。</param>
    /// <returns>DataTable</returns>
    internal static DataTable MatchDt(string regularString, string regularExpressions, int isSubDt = 1)
    {
        try
        {
            DataTable dt = new DataTable();
            MatchCollection M = Regex.Matches(regularString, regularExpressions);
            if (M.Count <= 0) return dt;
            foreach (Match m in M)
            {
                var dr = dt.NewRow();
                for (var i = isSubDt; i < m.Groups.Count; i++)
                {
                    if (dt.Columns.Count <= 0)
                    {
                        for (var k = isSubDt; k < m.Groups.Count; k++)
                        {//创建列名
                            dt.Columns.Add("匹配项" + (k + 1));
                        }
                    }
                    if (isSubDt == 1)
                        dr[i - 1] = m.Groups[i].Value;
                    else
                        dr[i] = m.Groups[i].Value;
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }
        catch (Exception ee)
        { 
            return null;
        }
    }
    /// <summary>
    /// 根据正则表达式匹配出所有的符合条件的字符串。
    /// <para>结果将以 List 类型返回。</para>
    /// </summary>
    /// <param name="regularString">待匹配的字符集合。</param>
    /// <param name="regularExpressions">正则表达式规则。</param>
    /// <param name="isFilterRepetition">isFilterRepetition默认值为 1 ,表示过滤掉重复的项,为 0 时表示不过滤掉</param>
    /// <param name="isSubLists">isSubLists默认值为 1 ,为 0 时匹配所有符合条件项,为 1 时匹配所有符合条件子项,该参数可以忽略。</param>
    /// <param name="isContainEmptyValue">isContainEmptyValue默认值为 0 ,为 0 时过滤掉值为空的项,为 1 时包含值为空的项,该参数可以忽略。</param>
    /// <returns>List</returns>
    internal static List<string> MatchLists(string regularString, string regularExpressions, int isFilterRepetition = 1, int isSubLists = 1, int isContainEmptyValue = 0)
    {
        try
        {
            if (regularString == null) throw new ArgumentNullException("regularString");
            if (regularExpressions == null) throw new ArgumentNullException("regularExpressions");
            var list = new List<string>();
            MatchCollection M = Regex.Matches(regularString, regularExpressions);
            if (M.Count <= 0) return list;
            foreach (Match m in M)
            {
                for (var i = isSubLists; i < m.Groups.Count; i++)
                {
                    var val = m.Groups[i].Value;
                    if (isContainEmptyValue == 0)
                    {
                        if (val.Length <= 0) continue;
                    }
                    if (isFilterRepetition == 1)
                    {
                        if (!list.Contains(val))
                        {
                            list.Add(val);
                        }
                    }
                    else
                    {
                        list.Add(val);
                    }
                }
            }
            return list;
        }
        catch (Exception ee)
        { 
            return null;
        }
    }
}26
2015
07
      【C#、Asp.Net 工具类大全】正则匹配工具类
            发布:郑德才博客 | 分类:项目源码 | 评论:2 | 浏览:
          
        相关文章:
C#、Asp.Net 对比两个实体信息前后是否有所改变(结构相同和不相同) (2016-9-2 20:24:29)
C#、Asp.Net 将一个实体对象转换为另一个实体对象(结构可以不一样) (2016-9-2 19:14:5)
Asp.Net 常用时间计算 (2016-3-16 23:29:20)
【C#、Asp.Net 工具类大全】图片通用操作类 (2015-12-23 13:27:30)
【C#、Asp.Net 工具类大全】Request请求工具类 (2015-12-23 13:15:56)
【C#、Asp.Net 工具类大全】弹出提示操作类 (2015-12-23 13:6:1)
【C#、Asp.Net 工具类大全】Js常用操作类 (2015-7-15 14:23:33)
【C#、Asp.Net 工具类大全】Html常用帮助类 (2015-7-11 23:42:53)
C#字符串编码帮助类 (2015-7-11 23:39:38)
【C#、Asp.Net 工具类大全】压缩文本、字节或者文件的压缩辅助类 (2015-7-11 23:23:49)
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
评论列表: