正则的使用

次数匹配(限制符)

次数匹配符

符号 描述 备注
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]  #有的版本说是这个,实测包含中文句号
发布了449 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/enthan809882/article/details/104299409