正则表达式学习

博客介绍了正则表达式,它是强大的文本处理工具。阐述了其定义,即制定规则匹配符合的字符串,还介绍了语法,如普通字符匹配相同字符。同时提到了一些注意事项,像零宽度匹配、条件判断、分组编号及反向引用等内容。

正则表达式是什么?
正则表达式是一种强大的文本处理工具。

正则表达式的定义
制定了一个规则,通过这个规则匹配一些符合的字符串。

正则表达式的语法

  • 普通字符

  •       字母,数字,汉字,下划线,以及没有特殊定义的标点符号,都是普通字符。表达式中的普通字符,在匹配字符串的时候,匹配与子相同的一个字符。

  • 简单的转义字符

  • \n代表换行符
    \t制表符
    \\代表 \ 本身
    \^ , \$ , \. , \( , \) , \{ , \} , \? , \+, \* , \| , \[ , \]匹配这些字符本身
  • 标准字符集合

  • \d0~9的任意一个数字
    \w任意一个字母或数字或下划线,也就是a~z,A~Z,0~9其中的一个
    \s包括空格,换行符,制表符等空白字符中的任意一个
    .小数点可以匹配任意一个字符(除了换行符),如果要匹配包括“\n”在内的任意字符,一般用[\s\S]
  • 自定义字符集

  • [abc@]匹配a,b,c和@
    [^abc]匹配除了abc之外的任意字符
    [f-k]匹配f到k之间的任意字符
    [^A-S3-5]匹配A到S和3到5之外的任意字符

    注意

    • 正则表达式的特殊符号,被包含到中括号中会失去其特殊意义,表示其本身。除了"^","-"之外。
    • 标准字符集合,除了.以外,如果被包含于中括号,自定义字符集将包含该集合。比如:[\d.\-+]将匹配数字,小数点,+,-

  • 量词

  • {n}表达式重复n次
    {m,n}表达式至少重复m次,至多重复n次
    {m,}表达式至少重复m次
    ?表达式匹配0到1次,相当于{0,1}
    +表达式至少出现一次,相当于{1,}
    *表达式不出现或出现任意次,相当于{0,}
    贪婪模式(默认),次数匹配的越多越好
    非贪婪模式,在后面加?,次数匹配的越少越好

    例子:
    /d{6} = /d/d/d/d/d/d,匹配连续的6个数字字符串
    /d{3,6}? 匹配3到6的连续字符串,若有超过6个的 字符串,匹配3个,就会匹配下一段
    /d{3,6} 与上面相反,会优先匹配6个,
  • 字符边界

  • ^匹配字符串开始的地方
    $匹配字符串结束的地方
    \b匹配但单词的一个边界,就是前面的和后面的不全是\w
  • 选择符和分组

  • |
    分支结构
    左右两边表达式或的关系,匹配左边或右边
    ()
    捕获组
    (1)在被修饰匹配次数的时候,括号中的表达式作为一个整体被修饰
    (2)去匹配结构的时候,括号中的表达式匹配的内容可以被单独得到
    (3)每一对括号会分配一个编号,使用()的捕获根据左括号的顺序 从一开始编号
    (?:Expression)一些表达式中,不得不使用(),但又不需要保存()子表达式匹配的内容,这时就可以用非捕获组
  • 预搜索(零宽断言)

  • 只进行子表达式的匹配,匹配内容不计入最终结果,是零宽度的
    这个位置应该符合某个条件,判断当前后是否符合指定条件,但不匹配前后字符。

    (?=exp)后面的表达式exp
    (?<=exp)前面的表达式exp
    (?!exp)后面不能匹配的表达式exp
    (?<!exp)前面不能匹配的表达式exp
  • 反向引用(\nnn)

  • 每对括号会分配一个编号,根据左括号的顺序。
    通过反向引用,可以对分组已经捕获的字符串进行引用
    \nnn 就是 \1,\2…\100等

    正则表达式的匹配模式

    • IGNORECASE 忽略大小写模式
             —匹配时忽略大小写
             —默认情况下正则表达式是要区分大小写的
    • SINGLELINE 单行模式        —整个文本看作一个字符串,只有一个开头和一个结尾
             —使用小数点可以匹配包括换行符在内的任意字符
    • MULTILINE 多行模式
             —每行都是一个字符串,都有开头和结尾
             —在此模式下,如果仅需匹配字符串开始和结束的地方,可以使用\A和\Z
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值