正则表达式 - 语法

1.什么是正则表达式

1.1正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。

1.2 在线匹配工具:

1 http://www.regexpal.com/
2 http://rubular.com/

2.正则字符简单介绍

2.1 元字符介绍

“^”^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。
“$”$会匹配行或字符串的结尾
“\b”不会消耗任何字符只匹配一个位置,常用于匹配单词边界 。例如我想从字符串中"This is Regex"匹配单独的单词 “is” 正则就要写成 “\bis\b” --值得注意:\b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界
“\d”匹配数字,
“\w”匹配字母,数字,下划线.。例如我要匹配"a2345BCD__TTz" 正则:"\w+" 这里的"+"字符为一个量词指重复的次数,稍后会详细介绍。
“\s”匹配空格 。例如字符 “a b c” 正则:"\w\s\w\s\w" 一个字符后跟一个空格,如有字符间有多个空格直接把"\s" 写成 “\s+” 让空格重复
“.”匹配除了换行符以外的任何字符
“[abc]”字符组 匹配包含括号内元素的字符 。还可以写成[a-z]匹配a至z的所以字母就等于可以用来控制只能输入英文了

2.2 几种反义
写法很简单改成大写就行了,意思与原来的相反,这里就不举例子了

“\W”匹配任意不是字母,数字,下划线 的字符
“\S”匹配任意不是空白符的字符
“\D”匹配任意非数字的字符
“\B”匹配不是单词开头或结束的位置
“[^abc]”匹配除了abc以外的任意字符

2.3 量词
先解释关于量词所涉及到的重要的三个概念

**贪婪(贪心)**如"*"字符 贪婪量词会首先匹配整个字符串,尝试匹配时,它会选定尽可能多的内容,如果 失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。相比下面两种贪婪量词对资源的消耗是最大的,

懒惰(勉强) 如 “?” 懒惰量词使用另一种方式匹配,它从目标的起始位置开始尝试匹配,每次检查一个字符,并寻找它要匹配的内容,如此循环直到字符结尾处。

占有 如"+" 占有量词会覆盖事个目标字符串,然后尝试寻找匹配内容 ,但它只尝试一次,不会回溯,就好比先抓一把石头,然后从石头中挑出黄金

“*”(贪婪)重复零次或更多例如"aaaaaaaa" 匹配字符串中所有的a 正则: “a*” 会出到所有的字符"a"
“+”(懒惰)重复一次或更多次例如"aaaaaaaa" 匹配字符串中所有的a 正则: “a+” 会取到字符中所有的a字符, "a+“与"a*“不同在于”+“至少是一次而”*” 可以是0次
“?”(占有)重复零次或一次例如"aaaaaaaa" 匹配字符串中的a 正则 : “a?” 只会匹配一次,也就是结果只是单个字符a
“{n}”重复n次例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则: “a{3}” 结果就是取到3个a字符 “aaa”;
“{n,m}”重复n到m次例如正则 “a{3,4}” 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa" 正则都可以匹配到
“{n,}”重复n次或更多次与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次

2.4 懒惰限定符

“*?”重复任意次,但尽可能少重复如 “acbacb” 正则 “a.*?b” 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb"
“+?”重复1次或更多次,但尽可能少重复与上面一样,只是至少要重复1次
“??”重复0次或1次,但尽可能少重复如 “aaacb” 正则 “a.??b” 只会取到最后的三个字符"acb"
“{n,m}?”重复n到m次,但尽可能少重复如 “aaaaaaaa” 正则 “a{0,m}?” 因为最少是0次所以取到结果为空
“{n,}?”重复n次以上,但尽可能少重复如 “aaaaaaa” 正则 “a{1,}?” 最少是1次所以取到结果为 “a”

参考:https://www.cnblogs.com/zery/p/3438845.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值