正则表达式 G[S]:

 

序言:下边几条都是依照本人付出经历和网络资料整理总括的,初学者可特出入门学习,加深圳影业公司象,高手请54.
Func和Action委托的分别和省略利用 1、三种委托的广大款式和区分
(1)、Func委托有5个重载情势,差异仅在于它所指向的措施的签字的参数个数,分别如下:

     大家的编写翻译原理实验已经达成了文法深入分析了,其中贰个便是分别终结符和非终结符。有的文法起首未有G[S]:,然则大多数都是一些。在界其余时候不能够将那些包罗在其间。G[S]:那一个给我们的音讯是,文法初始符是:S,但是G却不是非终结符,所以要将其挑出来。在G[S]:中,它们是用作一个完完全全的。当中只怕还大概有变化,如G1[S]:等,所以供给正则表明式来同盟。

Func<TResult>

     这几个正则表明式是 @”^[A-Z][0-9]{0,1}\[[A-Z]\]:$”
,构造也是很轻松的,可是首先次test的时候却从没大功告成。后天清早自家多个个假名相配的结果依旧如此,本次试验却成功了。真不通晓为啥会那样,只怕是G1[S]:中的冒号有失水准呢。大概是华语的可能全角的。笔者以为这几个正则表明式挺有趣的。

Func<T,TResult>

     那只是一段测量试验代码

Func<T1,T2,TResult>

 

unc<T1,T2,T3,TResult>

 

Func<T1,T2,T3,T4,TResult>
当中T,T1,..T4是信托指向的章程的参数的档期的顺序,TResult为艺术的归来类型。
(2)、Action委托也许有5个重载格局,分别如下:
Action

 

Action<T>

图片 1图片 2Code
using System.Text.RegularExpressions;

Action<T1,T2>

namespace regex
{
    class test
    {
        public static void Main()
        {
            string input = “A1[S]:”;
            string patten = @”^[A-Z][0-9]{0,1}\[[A-Z]\]:$”;
            Regex reg = new Regex(patten);
            //Regex reg = new Regex(@”^[A-Z][0-9]{0,1}\[[A-Z]\]:$”);
            Match match = reg.Match(input);
            if (match.Success)
            {
                 System.Console.WriteLine(“相配成功!”);
            }
            else
            {
                System.Console.WriteLine(“相称不成功!”);
            } 
        }
    }
}

Action<T1,T2,T3>

在编码的时候照旧要精心,防止有个别逻辑错误。

Action<T1,T2,T3,T4>
当中T,T1,..T4是委托指向的法子的参数的花色。
从上边的委托情势大家就足以深入分析出来,Func和Action委托的独一无二分裂在于Func要有再次回到值, Action未有重回值。
2、轻易示例代码

 

图片 3图片 4代码


  class Program
    {
        static void Main(string[] args)
        {
            int num = 5;
            /*  Func和Action委托的天下无双区别在于Func要有重返值, Action未有再次来到值 */
            FirstCalcSquare calFirst = Square;//delegate
            Console.WriteLine(“The square of {0} is {1}.”, num, calFirst(num));

            Func<int, int> funcTest = Program.Square;//Func
            Console.WriteLine(“The square of {0} is {1}.”, num, funcTest(num));

            SecondCalcSquare calSecond = GetSquere;
            calSecond(num);//delegate

            Action<int> actionTest = Program.GetSquere;
            actionTest(num);//Action

            Console.ReadLine();
        }
        private delegate int FirstCalcSquare(int input);
        private static int Square(int input)
        {
            return input * input;
        }

        private delegate void SecondCalcSquare(int input);
        private static void GetSquere(int input)
        {
            Console.WriteLine(“The square of {0} is {1}.”, input, input * input);
        }

    }

 
附1:透过命令行保存webservice为地点的类
时不常用到这么些效应,通过如下的vs命令行:
wsdl    /l:cs  /n:Test
注明:wsdl url   /l:cs(钦定语言)  /n:(命名空间)

附2:c#正则表达式使用小结 一、正则表明式概述
1、正则表达式能够作为是一种有特定功用的微型编制程序语言:在大的字符串表明式中固定叁个子字符串。它不是一种新能力,最初是在unix境遇中支出的,与perl一齐使用的相当多。ms把它移植到windows中,System.Text.RegularExpression命名空间中的繁多.net类都协理正则表明式。
2、首要包罗的五个效益
(1)一组用于标记字符类型的转义字符。您或者熟谙dos表明式中的*字符表示任意字符串(比如,dos命令dir
pro*会列出装盛名称以pro开始的公文)。
(2)一个系统。在搜求操作中,它把字符串和高级中学级结果的逐一部分构成起来。
二、示例
1、常见的特定字符或转义系列

标记        含义        示例              相配的言传身教
^     输入文本的伊始    ^a       a,但不得不是文本的率先个字符
$     输入文本的最终    z$         z,但不得不是文本的最后二个字符
.     除了换行符(\n)  a.c      
 abc,azc,图片 5
       外全数单个字符
*     >=0次的向导字符   ab*c  
  ac,abc,abbc,图片 6
+     >=1次的指点字符   ab+c   
 abc,abbc,abbbc,图片 7
?     能够重复0次或1次  ab?c       ac或然abc
       的带领字符   
\s    猖獗空白字符      \sa      [space]a,\ta,\na
\S    \s的补集          \Sa    
 aa,ba图片 8不能是\ta,\na等
\d    0-9的数字         \da     
1a,2a,图片 99a
\D    \d的补集          \Da       aa,+a..不会是数字和a的组合
\b    字边界             abc\b   以abc结尾的别样公文
\B    不是字边界的地点   \Babc\B  字中间的其余abc

\w    单词字符,指大小写字母、0-9的数字、下划线
\W    \w的补集

归纳示例代码:

图片 10图片 11Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace MyCsStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.^和$
            string strSource = “think in c# deeply”;
            Regex myReg = new Regex(“think in c# deeply”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            myReg = new Regex(“^think in c# deeply$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            myReg = new Regex(“^think in c# deep$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            myReg = new Regex(“^Think in c# deeply$”);
            Console.WriteLine(myReg.IsMatch(strSource));//false

            //带换行的情景
            strSource = @”think in 
c# deeply”;
            myReg = new Regex(“think in \r\nc# deeply”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            myReg = new Regex(“^think in \r\nc# deeply$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            myReg = new Regex(“^think in c# deeply$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            myReg = new Regex(“^think in c# deeply$”);
            Console.WriteLine(myReg.IsMatch(strSource));//false

            //2..,*,+,?
            strSource = “abc xybzac acbab”;
            myReg = new Regex(“.b”);
            Console.WriteLine(myReg.Matches(strSource).Count); //4处匹配
            strSource = “abcdefg asdfghjkbedk aabccd”;
            myReg = new Regex(“a*b”);
            Console.WriteLine(myReg.Matches(strSource).Count); //3处匹配
            myReg = new Regex(“a+b”);
            Console.WriteLine(myReg.Matches(strSource).Count); //2处匹配
            myReg = new Regex(“a?b”);
            Console.WriteLine(myReg.Matches(strSource).Count); //3处匹配

            //3.\s和\S
            strSource = “aoe iuv abc uvaw abcxyz”;
            myReg = new Regex(@”\sa”);
            Console.WriteLine(myReg.Matches(strSource).Count); //2处匹配
            myReg = new Regex(@”\Sa”);
            Console.WriteLine(myReg.Matches(strSource).Count); //1处匹配

            //4.\d和\D
            strSource = “123aoe iuv abc uv789aw abcxyz”;
            myReg = new Regex(@”\da”);
            Console.WriteLine(myReg.Matches(strSource).Count); //2处匹配
            myReg = new Regex(@”\Da”);
            Console.WriteLine(myReg.Matches(strSource).Count); //2处匹配

            //5.\b和\B
            strSource = “aoe iuv abc uv789aw abcxyz”;
            myReg = new Regex(@”\ba”);
            Console.WriteLine(myReg.Matches(strSource).Count); //3处匹配
            myReg = new Regex(@”\Ba”);
            Console.WriteLine(myReg.Matches(strSource).Count); //1处匹配
            myReg = new Regex(@”\Ba\B”);
            Console.WriteLine(myReg.Matches(strSource).Count); //1处匹配

            //6.\w和\W
            strSource = “abc123_()*&$”;
            myReg = new Regex(@”\w”);
            Console.WriteLine(myReg.Matches(strSource).Count); //7处匹配
            myReg = new Regex(@”\W”);
            Console.WriteLine(myReg.Matches(strSource).Count); //5处匹配

            Console.ReadLine();
        }
    }
}

2、特殊字符的同盟

图片 12图片 13Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace MyCsStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.\,双引号”,和星号*
            string strSource = “\\\\”;
            Regex myReg = new Regex(@”^\\\\$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1
            strSource = @”\\”;
            myReg = new Regex(@”^\\\\$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            strSource = “\””;
            myReg = new Regex(@”^””$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            strSource = “\”\””;
            myReg = new Regex(@”^””””$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            strSource = “*”;
            myReg = new Regex(@”^\*\*$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            Console.WriteLine(myReg.Matches(strSource).Count); //0

            strSource = “**”;
            myReg = new Regex(@”^\*\*$”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            Console.ReadLine();
        }
    }
}

3、常见重复描述字符
{n}  相配前面包车型客车字符n次
{n,}  相配后面的字符n次或多于n次
{n,m}  相称前边的字符n到m次
示例:

图片 14图片 15Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace MyCsStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.{n},{n,}和{n,m} 
            string strSource = “abc123xyz”;
            Regex myReg = new Regex(@”\d{3}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            myReg = new Regex(@”\w{9}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            myReg = new Regex(@”\w{10}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            Console.WriteLine(myReg.Matches(strSource).Count); //0

            myReg = new Regex(@”\d{1,}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            myReg = new Regex(@”\d{3,}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //1

            myReg = new Regex(@”\d{4,}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            Console.WriteLine(myReg.Matches(strSource).Count); //0

            myReg = new Regex(@”\D{1,3}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //2

            myReg = new Regex(@”\D{2,3}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //2

            myReg = new Regex(@”\D{4,5}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //false
            Console.WriteLine(myReg.Matches(strSource).Count); //0

            Console.ReadLine();
        }
    }
}

4、表示十三分“也许”的|

图片 16图片 17Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace MyCsStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            //| OR的关系
            string strSource = “abc123xyz”;
            Regex myReg = new Regex(@”(\d|[a-zA-Z]){3}”);
            Console.WriteLine(myReg.IsMatch(strSource)); //true
            Console.WriteLine(myReg.Matches(strSource).Count); //3

发表评论

电子邮件地址不会被公开。 必填项已用*标注