0
点赞
收藏
分享

微信扫一扫

正则的使用

小编 2023-02-28 阅读 85


文章目录

  • ​​次数匹配(限制符)​​
  • ​​次数匹配符​​
  • ​​? 号跟在任意限制符后面表示非贪婪匹配(尽可能少的匹配)​​
  • ​​应用​​
  • ​​删除所有空行​​
  • ​​所有非空行​​
  • ​​包含换行的所有字符​​
  • ​​除了字母a和b之外的所有字符​​
  • ​​查找所有单词​​
  • ​​包含er但是不以er结尾的单词​​
  • ​​查找姓张的,但不能是张翠山,张松溪,张无忌​​
  • ​​匹配​​
  • ​​叫秦叔宝的​​
  • ​​姓段的,叫正明,正淳的​​
  • ​​预查(默认正向,有肯定和否定预查)​​
  • ​​姓杨的,叫康,过的杨​​
  • ​​姓杨的,不叫康,不叫过的杨​​
  • ​​反向预查​​
  • ​​风字结尾,叫陈玄风,梅超风,曲灵风的风​​
  • ​​风字结尾,不叫陈玄风,梅超风,曲灵风的风​​
  • ​​发挥使用​​
  • ​​删除代码注释(这里只考虑//,/**/这样的注释不考虑)​​
  • ​​所有中文汉字​​

次数匹配(限制符)

次数匹配符

符号

描述

备注


0或1次


+

1及以上


*

0及以上(任意次)


{n}

n次


{n,}

至少n次


{n,m}

n到m次

(左右都是闭区间)–

? 号跟在任意限制符后面表示非贪婪匹配(尽可能少的匹配)

o{2,5}?   # 如ooooo ,它不会匹配5个,而是会匹配2个

应用

删除所有空行

^(\s*)\n  # 从开头到换行, 仅包括0或者n个空格

所有非空行

^([\S| ]+)   # ^表示开头。  "[\S| ]" 表示非空字符或者空格,注空格不要用\s,因为\s匹配任何空白字符,包括空格、制表符、换页符等等。

包含换行的所有字符

(.|\n)  # 如果只用.号,那么只是匹配到有文字的地方,加上\n会匹配到行尾

除了字母a和b之外的所有字符

[^ba]   或者 [^ab]

查找所有单词

\b(\w*)\b     # \b表示单词边界

包含er但是不以er结尾的单词

er\B  # \B 非单词边界

查找姓张的,但不能是张翠山,张松溪,张无忌

张(?!翠山|松溪|无忌)   #  (?!pattern),预查不消耗字符

匹配

叫秦叔宝的

(秦叔宝)  # (pattern) 匹配并获取

姓段的,叫正明,正淳的

段(?:正明|正淳)   # (?:pattern) 匹配但不获取结果,不进行存储供以后使用(在这里其实看不出来作用)

预查(默认正向,有肯定和否定预查)

姓杨的,叫康,过的杨

杨(?=康|过) # (?=pattern)  肯定预查,非获取匹配

姓杨的,不叫康,不叫过的杨

杨(?!康|过)  # (?!pattern) 否定预查,非获取匹配

反向预查

类似预查,只不过方向相反

风字结尾,叫陈玄风,梅超风,曲灵风的风

(?<=陈玄|梅超|曲灵)风  #(?<=pattern) 反向肯定预查

风字结尾,不叫陈玄风,梅超风,曲灵风的风

(?<!陈玄|梅超|曲灵)风   # (?<!pattern) 反向否定预查

发挥使用

删除代码注释(这里只考虑//,/**/这样的注释不考虑)

(?<!http:|\S)//.*$   # //及以后的字符,当然http://www.baidu.com  这样的不能删除   \S是非空白字符(但目前没理解这里的作用)

所有中文汉字

[\u4E00-\u9FA5]  #推荐这个
[\u2E80-\u9FFF] #有的版本说是这个,实测包含中文句号


举报

相关推荐

0 条评论