练习正则表达式

    正则表达式可以通过元字符(规则)来匹配查找相关的的字符集合。他与通配符是有区别的。而且相关的使用工具对正则表示的元字符的是有区别的。

    首先我们先来了解下常用的元字符及含义(并不是所有的元字符)

   这上面的这些字符没有别的办法就是记住和理解,其实就是规则文字游戏并不是一开始接触时候的时候所认认为的那么难。重要的是先对单个元字符去实验下然后再去组合。综合而言正则表达式就是计算机所能识别的并被人类所能操作的一种语言,他有很多组合方式来实现你所想要的功能。

    使用正则表达式之前首先肯定是有需求或者说是目标,然后分析组合匹配规则。在这里我感觉还是使用扩展正则表达式的好,无需纠结。

    首先准备一串字符,我放在了/tmp/ceshi

 匹配下以30开头中间必须含有70的字符串:

    1、单个匹配以30为开头:需要做行首锚定^30

    2、单个含有70: 70 

    3、组合匹配需要注意中间30和70之间是可以经过任意字符的.*

    ^30.*70

   

 匹配下以30开头中间必须包含1800以70结尾的字符串:

    还是同样的步骤分析几个重要的点

    1、30开头:^30

    2、中间必须包含1800: 1800前后都有可能存在字符 .*1800.*

    3、以70结尾:70$

    ^30.*1800.*70$

 再来试几个简单的实例

 1、要求70 至少出现2次最多出现3次

    我们需要用到{n,m}其中n<=m。最少匹配n次且最多匹配m次。

    70{2,3}是这样吗?我们来试试

    执行错误了为什么呢?仔细看看元字符你会发现它们基本上都是针对单个字符.

    70{2,3}实际表示的意思应该是700|7000.

    那么我们如何匹配多个字符呢?这就用到了().

    这里需要注意下\n 匹配的是()里面的匹配处来的内容而不是里面的子表达式

    n从外圈开始计算,最外圈的为1

    2、+和?这两个元字符其实用法跟{n,m}是一样的

    +可以写成{1,}至少出现1次,m不赋值表示无限制,但是不许符合n的要求。

    ?可以写成{0,1}

    对于 \B  \b \< \>呢你可以把上面字符中被空白字符隔开的一组数字看成是一个单词。

    \B200\B  \b200\b \<200\> 的区别通过下面的匹配输出就能对比出来了。

最后呢我们来匹配下一个邮箱地址

邮箱的格式 zhuzw_1203@126.com

这是126的邮箱名字规则:6~18个字符,可使用字母、数字、下划线,需以字母开头

字母开头[[:alnum:]]

可使用字母、数字、下划线 :([a-z]|[A-Z]|[0-9]|[_])

6~18个字符:{5,17}注意因为前面已经有开头的字母占一位了

@:@ 

邮箱后缀格式126.com :  ([[:alnum:]]+[\.])+[[:alnum:]]+

    英文大小写数字字符至少出现一次,转义.这个符号;把这两个字表达式作为一个组至少出现一次;最后匹配一个英文大小写数字字符至少出现一次。分组的原因是可能会有126.com.cn  126.163.com.cn 这种格式的出现。

    好了写到这里正则表达式的笔记和分享暂告一段落。最后呢其实还是大家先去分析下我们的最终目标然后结合语法去写;目标明确才好去实现。

原创文章,作者:东郭先生,如若转载,请注明出处:/3213

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐平台  万达娱乐直属  万达主管QQ  guoqibee.com  万达娱乐开户  万达开户  万达注册  万达娱乐平台  万达娱乐注册  万达开户