码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2019-04-12 00:48:53      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:处理   single   符号   foo   exp   就是   plain   替换   windows   

正则表达式,Regular Expression ,缩写为regex regexp、RE等

在编程中,最常打交道的就是字符串,处理最多的就是字符串,

正则表达式是文本处理领域最常用的技术,对字符串按照某种规则检索,或者替换字符串

分类:

BRE :基本的正则表达式,grep、sed、vi等软件支持,vim有扩展

ERE : 扩展的正则表达式,egrep(rgrep-E),sed-r等

PCRE : (Perl Compatible Regular Expressions),几乎所有语言都是PCRE的方言或变种,Python从1.6开始使用SRE正则表达式引擎,可以理解为PCRE的子集,见模块re。

 

基本语法

元字符 metacharacter

.点,匹配除换行符外的任意一个字符,在Windows下回车换行是两个\r\n,有时正则表达式会留下一个回车,处理时要注意

[abc] 匹配一个字符,包含在集合中的任意一个字符,[abc]匹配plain中的a

[^abc]除abc外的一个字符,只匹配一个,匹配plain中的‘p‘,‘l‘,‘i‘,‘n‘

[a-z] 字符范围,也是一个集合,只匹配一个字符

[^a-z] 字符范围,也是一个集合,只匹配一个字符,除其中的字符

\b 匹配单词的边界,\bb表示在文本找到b开头的单词,b\b为以b结尾的

\B 匹配不是字符的边界的字符,

\d 匹配[0-9]中的一位

\D 匹配一位非数字

\s 匹配一位空字符

\S 匹配一位非空白字符

\w 匹配[a-zA-Z0-9_],包括中文的字,不匹配符号,支持uncode字符,匹配时注意行尾的回车换行,

\W 一位非文字

\\,\n,\r 原意,加转义符来表达原意

多位匹配贪婪模式,匹配找到的最长的字符

* 多次匹配,零或者以上任意次 ,使用.*是注意范围,模式会影响找到的内容,单行模式有可能找到的并不是你要的,

+ 至少一个,{1,}

? 有无{0,1}

{n} 固定重复次数

{n,}  重复n次及以上

{0,} 相当于*,{1,}相当于+

{n,m} {0,1} n要小于m

 

x|y 匹配 x或者y 注意w|food 和(w|f)ood 的区别,前者会找到w,food

() 分组,或者捕获,使用捕获后会自动分配组号,从1开始,可以改变优先级,匹配带来分组,没有匹配到就不会有分组

(very)\s+\1 引用分组号\1, \s+表示中间空白字符一个以上

(?:w|f)ood 表示括号改变优先级,不分组

((?:w|f)ood) 表示分组组名food,wood

(?:<name>exp) python中使用(?P<head>w|f)ood 命名分组

零宽断言

断言不是分组

f(?=ood) (?:=)断言只是条件,不参与匹配,匹配f,ood是条件

(?<=f)ood 匹配ood,f只是条件

负向零宽断言

(?!) 断言f(?!ood)f后一定不是ood,

(?<!)

(?#commend) 注释,少用。写在表达式前后

 

分组和捕获意思相同

使用时,能用简单就不用复杂

 

贪婪和非贪婪,

捕获的内容或匹配的内容不同

(.*?) 找到的内容,非贪婪

*? 匹配任意次,尽可能少

??

+?

{2,}? 相当于{2}

?? 和*? 单独使用没有意义,找啥?

加在重复的选项上

 

引擎的选项

ignoreCase 忽略大小写

Singleline

Mulitline

 

单行模式可以突破换行符,控制的是换行符,控制的是点能否匹配到换行符

. 点可以匹配包括换行符的字符

^ $ 表示整个字符串的开头和结尾

 

多行模式

. 匹配除换行符外的所有字符

^$ 控制行首行尾,多行匹配行首尾

结尾注意\n\r 加\r?,win下有问题

 

socket 库,筛选ip地址

从分组组名中提取数据

分隔符取反

你想要的数据中(最不可能出现的值可以作为你取反的值)来求你要的值

 

 


取1-999的数字
[1-9]\d|[1-9]\d|\d
[1-9]?\d\d?
\b(?!0)\d{1,3}\b

25[0-5]|2[0-4]2[0-4]|1\d{0,2}|0

正则表达式

标签:处理   single   符号   foo   exp   就是   plain   替换   windows   

原文地址:https://www.cnblogs.com/rprp789/p/9608091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!