实习记录7(正则表达式)

好好写一篇关于正则表达式的文章,只是个开始。。。。。。。(妹的,说了又没执行,毛线。。。)

1,判断TXT文本框里的值是否是整数类型 http://wenwen.soso.com/z/q120543222.htm,

c#中如何使用正则判断文本框中的内容为正整数且输入的数值范围是0到36 bool flag = Regex.IsMatch(textBox1.Text, "^[0-9]$|^[1-2][0-9]$|^3[0-6]$");

2,如何判断输入文本框是值是否是数字 http://www.cnblogs.com/chenxiao-ASPNET/archive/2011/02/13/1952913.html

3,只限定它只能输入数字,或怎么判断他的值是一个数字 http://bbs.bccn.net/thread-146830-1-1.html

正则表达式的学习 http://www.cnblogs.com/bangbangjiang/p/3246193.html

http://www.cnblogs.com/baochuan/p/3169988.html#!comments

http://www.cnblogs.com/wangqiguo/archive/2012/05/08/2486548.html

http://www.zhihu.com/question/20197998

http://www.cnblogs.com/eagle1986/archive/2010/01/12/1644714.html

    你妹啊,整天就是YY,收集些资料给自己学习,实际上又不会看,妹的,当这样虚伪的好学生真的好么???好个毛线啊,真是被自己的“愚蠢”害惨了。。。。(靠,作为旁观者去看自己还真是能发现自己是如此傻逼。。。)

1.什么是正则表达式?

 以前做的过程中,好像表单的验证时要用到,不过那时好像只是调用了其中的某个函数,然后就没下文了,妹的,这就是你学什么东西都半吊子的原因,知道吗?

 正则表达式是一种描述字符串结构的语法规则(妹的,搞这么抽象干嘛?),是一个特定的格式化模式,可以匹配,替换,截取匹配的字串(好了,这是它的作用,知道吧)。

 1.1学习正则表达式之前,要了解的几个术语。( 你妹啊,这样看着还是不懂啊!! !)

  grep:最初是ED编辑器中的一条命令,用来显示文件中特定的内容,后来成为一个独立的工具grep(没接触过,没用过,你想看着就懂啊,你妹的。。。)

  egrep:扩展的grep,大大增强了正则表达式的能力。

  POSIX(可移植操作系统接口):一系列标准,确保操作系统之间的可移植性。

  Perl(实际抽取与汇报语言) (妹的,又不知道干嘛用的。。。)

  PCRE:兼容Perl正则表达式的一套正则引擎。。。

2.再来看下正则表达式的语法规则

 一个完整的正则表达式由两部分构成,元字符和文本字符。元字符就是具有特殊含义的字符,如“*”和“?”。文本字符就是普通的文本,如字母和数字等。(你妹啊,没看懂书上的例子啊。。)PCRE风格的正则表达式一般放置在定界符"/"中间。如"/w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*/"  (妹的,初看这一串表达式,你看得懂这是什么意思?没看懂正常好吗?妹的。。)

  2.1 行定位符(^和$)

  行定位符用来描述字串的边界。"^"表示行的开始,"$"表示行的结束。

  如:^tm 该表达式表示以tm开始的字串,比如tm tomorrow就可以匹配,而tomorrow tm则不匹配,但如果使用:tm$ 则后者可以匹配而前者不能匹配。

  如果要匹配的字串可以出现在字符串的任意部分,那么可以直接写成:tm.

  2.2单词定界符(、B)

   继续上面的实例,使用tm可以匹配tm在字符串中出现的任何位置。即类似html、utmost中的tm也会被查找出来。但现在需要匹配的是单词tm,而不是单词的一部分。这时可以使用单词定界符,表示要查找的字串为一个完整的单词。如:tm

  大写的B意思和相反。它匹配的字串不能是一个完整的单,而是其他单词或字串的一部分。如:BtmB

 2.3字符类([])

 正则表达式是区分大小写的,如果要忽略大小写可使用括号表达式"[]"。只要匹配的字符出现在方括号内,即可表示匹配成功。但要注意,一个方括号只能匹配一个字符。

 例如:[Tt][Mm] 这种写法可以匹配字串tm的所有写法。

2.4 选择字符(|)

   这个可以实现上面字符类的匹配模式,可以理为“或”

   如:T|tM|m 表示以字母T或t开头,后面接一个字母M或m.(使用"[]"和"|"的区别在于"[]"只能匹配单个字符,而"|"可以匹配任意长度的字串,上例可以写为:TM|tm|Tm|tM)

 2.5 连字符(-)

   如果用正则表达式来匹配变量的第一个字母,要写为:[a,b,c,d...A,B,C,D...] 这无疑是非常麻烦的,正则表达式提供了连字符来解决这个问题。上述可以写成[a-zA-Z]

 2.6 排除字符([^])

   匹配不符合命名规则的变量,正则表达式提供了"^"字符。如:

  [^a-zA-Z]该表达式匹配的就是不以字母和下划线(为什么下划线也可以,奇怪?)开头的变量名。

 2.7 限定符(?*+{n,m})

  ?   匹配前面的字符零次或一次  如:colou?r,该表达式可以匹配colour和color

  +  匹配前面的字符一次或多次  如:go+gle,该表达式可以匹配的范围从gogle到goo..gle

  *  匹配前面的字符零次或多次   如:go*gle,该表达式可以匹配的范围从ggle到goo...gle

  {n} 匹配前面的字符n次,如go{2}gle,该表达式只匹配google

  {n,m} 匹配前面的字符最少n次,最多m次,如employe{0,2},该表达式额可以匹配employm、employe和employee.

 2.8 点号字符(.)

  如遇到这样的试题:写出5~10个以s开头,t结尾的单词,这是由很大难度的。在正则表达式中可以通过点字符(.)来实现这样的匹配。点字符(.)可以匹配出换行符外的任意一个字符。如匹配以s开头,t结尾,中间包含一个字母的单词的格式为:^s.t$ 匹配的单词包括:sat,set,sit等。

 2.9 转义字符()

  转义字符就是将特殊字符(如".","?","")变为普通的字符。举一个IP地址的实例

 127.0.0.1 格式为:[0-9]{1,3}(.[0-9]{1,3}){3}

 在这里介绍下 括号字符(()) 这个表达式的作用是分组,也就是}(.[0-9]{1,3}) 这个是一组,而且要出现三次(因为后面的{3},懂了吧。。。)

 2.10 反斜线()

  1)将一些不可打印的字符显示出来。 如a 为警报   为退格 等等。。

  2)指定预定义字符集 d 任意一个十进制数字,相当于[0-9]; D 表示任意一个非十进制数字

  3)定义断言  单词定界符,用来匹配字符串中的某些位置,

 2.11反向引用

   依靠子表达式的“记忆”功能来匹配连续出现的字串或字母。如匹配连续两个it,格式为(it)1

   如果使用了多个分组,那么可以用"1","2"来表示每个分组(顺序是从左到右)如:([a-z])([A-Z])12

  2.12模式修饰符

  模式修饰符的作用是设定模式。也就是规定正则表达式应该如何解释和应用。

  1) i (?i)···(?-i)、(?i:···) 忽略大小写模式

  2) m                             多文本模式

  3) s                              单文本模式

  4) x                              忽略空白字符

  模式修饰符既可以写在正则表达式的外面,也可以写在表达式内。如忽略大小写模式,可以写为/tm/i、(?!)tm(?-i)和(?i:tm)3种格式。

3.POSIX扩展正则表达式函数    http://www.jb51.net/shouce/php5/zh/ref.regex.html

 3.1 ereg()函数和eregi()函数

 bool ereg/eregi(string pattern,string string[, array regs]) 。。。。。

4.PCRE兼容正则表达式函数     http://pan.baidu.com/share/link?shareid=3514025449&uk=1023925322&fid=4273194759

算了这些函数用到的时候自己再查就好了。。。。

作者:wj704    出处:http://www.cnblogs.com/wj204/   
原文地址:https://www.cnblogs.com/wj204/p/3509086.html