精易论坛

标题: 正则表达式类教程(三) [打印本页]

作者: 王大家族    时间: 2017-10-1 11:10
标题: 正则表达式类教程(三)
本帖最后由 王大家族 于 2017-10-1 11:18 编辑

  回答之前的1[34578]\d{9}能否匹配所有手机号码。比如原文本为23134567987992。

   
   如图所示,匹配数量为1, 匹配文本为13456798799,为原文本中间的一部份。换句话说1[34578]\d{9}不够准确,那怎么才能不误匹配?


      一 学习元字符。
      1)\b表示单词或数字边界,\B是非数字或单词边界,和\b相反。\b和\B只起限定作用,不储存匹配结果。
       那么,\b1[34578]\d{9}\b就可以解决上面的误匹配问题。
      
        如图所示,匹配数量为0,匹配失败。


      2)  ^ 元字符
         1. 表示文字开头,必须是开头,如^abc,匹配( abc134567987992),不会成功,因为a前面有空格,不是开头。但匹配匹配(abc134567987992)会成功,匹配文本为abc。
         2. 在[ ]里表示除某些字符外,如[^a],表示只匹配除a字符外的。
  
      3) \s表示 所有空字符,如空格,换行符,制表符等等
      4) 还可将\d改为\D,也就是改为其对应的大写.那就\D就成了除数字之外的字符。还有\w和\W,\s和
\S等等。\W就是非字母和数字,\S就是非空字符
      
    既然\d和\D,\s和\S,\w和\W互为相反,那么其相加就可表示所有字符。
     比如[\s|\S]*可以匹配任意文本,无论有多长,无论有多少换行符。
     
         

如上二图所示,一次性可以匹配所有的文本,不管有多少行。
   
   二 有人会问。
  ^abc和\babc有什么区别?
  ^abc表示是一段文字首字符必须是abc,而且还是段首,前面不得有空.
      
              
        如上二图所示,匹配数量只为1,只匹配段首的abc。
   
     
    如上二图所示,匹配数量只为3,没有匹配babc和kabc,因为这两个的界并非a是。但比^abc灵活,不用考虑是否在段首。
  






欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4