正则表达式学习

      基本的东西大家其实都了解,不过这里还是写下,免得偶忘记了,其实主要是写一遍,有助于记忆。

【基本内容】

一、基本元字符和转义
       基本元字符事实上是字符的分类表示,每一个元字符代表了一个字符集。下面列出了正则式的所有元字符:(其中只有小写的元字符,每个小写的元字符的大写形式就是其补集)
        . - 匹配除了\n以外的所有字符 (不要看不到,是个dot,呵呵)
         ^ - 匹配字符串开始
        $ - 匹配字符串结束
       \b - 匹配单词的开始或结束,它的前一个字符和后一个字符不全是\w
       \d - 匹配所有数字,和 [0-9] 等效
       \w - 匹配所有单个大小写字母、数字、下划线,与 [a-zA-Z0-9_] 等效
       \s - 匹配所有单个空字符,与 [\f\n\r\t\v] 相同 (注:\f为换页符,\r\n\t大家都知道,\v是垂直\t)
      下面指出的所有字符在使用时都必须转义,即加上"\"前缀:. $ ^ {} [] ( | ) * + ? \   ,其中必须指出的是在字符集合(即[]所界定的字符集)中,字符 "-" "^" 是特殊字符,如果需要在字符区间中加上此字符,必须转义为"\-" "\^"。

二、字符集合
      可以使用 [] 界定一个字符集合来进行匹配,一个字符集合中只匹配单个字符,也就是说类如 [abcd] 匹配的只是a或者b或者c或者d,并不匹配ab,abc之类,因此字符集合中字符没有顺序的分别。当所需匹配的字符在ASCII表中具有一个连续的区间时,可以使用连字符 "-" 进行简写,如 [abcd] 可以写成 [a-d] ,而 [0-9:-@A-Z\[-`a-z] 可以写成 [0-z] 。
      在字符集合使用 "^" 前缀表示取补集,如 [^\w] 等效于 [\W]。

三、数量指定
       大部分的时间我们需要指定匹配的数量,正则表达式使用几种方式来指定匹配的数量:
      *   表示0个或者更多;+ 表示1个或者更多;? 表示0个或者1个;如果需要指定确定的数量,则使用 {} 来界定,{} 可以指定确定数量或者数量范围,当 {} 中只指定一个数时表示指定确切数量,当 {} 中指定2个数时表示指定数量范围,第一个数表示下限,第二个数表示上限,用逗号隔开,上限或者下限都可以省略(但只能省略一个),如果省略下限,则下限为 0,如果省略上限,则上限为无穷大。

四、 匹配子模式
      使用 () 来指定匹配子模式,使用子模式可以将规则应用于一个字符串,在使用上,一个子模式相当于一个简单字符,即把子模式当作一个整体来使用。比如:(dd){2} 匹配的就是   dddd 。
      在子模式中可以使用“或”匹配,用 "|" 表示,表示匹配两者均可。如:(ff|dd) 。
      子模式可以相互嵌套,如: ((ff){2}test) 。
      子模式默认将被存入一个个的分组,每一个子模式都将存入一个index从1开始的组中,后面可以使用 "\index" 来引用这个子模式的内容, 在下面的后向引用中将会用到。

五、后向引用 
        后向引用将使用子模式建立的分组。使用 $+序号或名字 来引用建立的分组。

【入门以后】

关于贪婪匹配和惰性匹配,默认是贪婪匹配,贪婪匹配后加?为惰性匹配,必须注意这两者的区别,贪婪匹配尽量使得匹配结果变得更长,而惰性匹配尽量使得匹配结果变得更短。

关于边界:通常情况下,以 空格、段落首行、段落末尾、逗号、句号 等符号作为边界,值得注意的是,分隔符“-”也可以作为边界;另外,当你对一个普通字符设定边界的时候,它的边界是诸如空格、分隔符、逗号、句号等,但是当你对一个边界,比如分隔符“-”或者“,”等,设定边界的时候,它的边界是普通字符。

      貌似虽然正则表达式的规范每个语言都一样,但是在具体运用在不同语言中时还是有些略微的差别。如在js中,使用"/"来界定正则式,而在java、c#等语言中直接使用引号来界定。而关于正则式的选项,在js中直接附加在"/"结束符后,如"/(?<=<h(\d{1,})>).*? (?=<\/\1)/i",而在java,C#等语言则是指定在options参数中。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值