马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1 配景先容
1.1 为什么要学习正则表达式?
一样平常学习大概其他场景中,经常会遇到针对文本文件中的内容举行查找、日志分析等,对正则表达式不了解大概不清楚,搞的比较难做。
1.2 什么是正则表达式?
正则表达式,Regular Expression,简称RE。
它表达的是一种文本模式。
它自己是一个字符串。
它是一些字符和特别字符组成的。
1.3 正则表达式可以做什么?
反正挺有用的,知道的人都知道。几个常用的地方:
1、单个文件内查找指定模式的字符串
2、磁盘上查找文件名称匹配某个模式的文件,列出来匹配了规则的文件路径
3、和linux命令grep、sed、awk等联合利用,做到删除、替换、查找文本等常规操纵。
4、和java大概shell编程实现文本的高级处理
5、其他字符串处理的场景。
总之,正则表达式的利用场景在字符串范畴是应用广泛的,值得轻微花点时间学习一下。
2 基本语法
序号字符分类字符简要阐明利用先容1普通字符[A-Z]从字符串中匹配大字母字符–2普通字符[a-z]从字符串中匹配小写字母字符–3普通字符[0-9]从字符串中匹配数字相当于\d4普通字符[A-Za-z]从字符串中匹配所有字母字符–5普通字符[A-Za-z0-9]从字符串中匹配字母和数字–6普通字符[具体的字符聚集]从字符串中匹配指定的字符聚集中的字符例如:[abc123] 就是从字符串中匹配a、b、c、1、2、3的字符,但凡字符串中出现这6个字符,都判定为掷中状态。7普通字符[^具体的字符聚集]非的逻辑,匹配字符串中不在指定范围内字符例如:[^A-Z]表示匹配字符串中不是大写字母的字符。8普通字符.字符点(我很藐视不清)匹配1个字符,这个字符是任意字符,但是不包括换行符(\n和\r)等效于[^\n\r]9普通字符\d匹配数字等效于[0-9]10普通字符\w匹配字母、数字、下划线等效于[A-Za-z0-9_]1定位字符^正则模式字符串匹配输入字符串的开始位置,相当于是限定在开头要匹配掷中。例如:^[#*],匹配开头是#大概*的字符串。2定位字符正则模式字符串$匹配输入字符串结尾位置,相当于限定要从结尾开始匹配例如:[#*]$,匹配结尾是#大概*的字符串。1转义字符\反斜杠字符,转义字符,把特别意义的符号的特别意义去除例如:\.\$ 表示的是匹配包括.$字符的字符串,而不是表示作为字符串结尾包括.的字符串。假如要匹配的是以圆点.结尾的字符串,那么正则是这样的:\.$1元字符*该字符跟在其他字符反面的位置,表示的是匹配前面的子表达式0次大概多次,留意包括0次。也就是大于或即是0次,相当于{0,},举例:zo*,意思是匹配z字母反面跟大于即是0个o字母,包括z,zo,zoo等等。2元字符+匹配前体面表达式大于即是1次相当于{1,}3元字符?匹配前体面表达式0或1次相当于{0,1}3元字符?假如?前面一些特别字符(*, +, ?, {n}, {n,}, {n,m}) 反面时,匹配模式是非贪婪的例如:假如字符串是123456,正则表达式是\d+ ,默认是贪婪的,那么结果匹配得到123456,假如正则表达式是\d+?,此时转换为非贪婪方式的,那么结果是1、2、 3、 4、 5、 6。4元字符{n}匹配前体面表达式n次5元字符{n,}匹配前体面表达式>=n次6元字符{n,m}匹配前体面表达式n~m次,包括n和m,m>=n例如:abc{1,3} 意思是匹配abc,abcabc,abcabcabc三种情况7元字符子表达式1|子表达式2匹配子表达式1和子表达式2,例如:abc|123,表示匹配abc大概123两种情况 3 典范案例
正则表达的编写有3点需要重点留意:
第一,先确定要目的的完备定义,并针对正则表达式需要计划全量的测试用例场景;
第二,特别字符大概会应用到普通字符场景,一定要举行转移;
第三,重新审视写完的正则表达式,举行精简。
3.1 正整数
正则表达式要告竣的目的定义:
和整数一样,正整数也是一个可数的无限聚集。在数论中,正整数,即1、2、3……;但在聚集论和计算机科学中,自然数则通常是指非负整数,即正整数与0的聚集,也可以说成是除了0以外的自然数就是正整数。正整数又可分为质数,1和合数。正整数可带正号(+),也可以不带。
具体写法:
- 写法1:
- \+{0,1}[1-9][0-9]{1,}|\+{0,1}[1-9]
- 写法2:
- \+?[1-9][0-9]+|\+?[1-9]
- 写法3:
- \+?[1-9]\d+|\+?[1-9]
- 写法4:
- \+{0,1}[1-9][0-9]{0,}
- 写法5:
- \+?[1-9]\d*
复制代码 其中涉及到转义字符、元字符? * {} 等的利用,需要特别小心。
3.2 IPv4类型的IP地址
3.2.1 点分10进制表示格式
正则表达式要告竣的目的定义:
点分10进制表示格式是IP地址的尺度表示方法。在这种格式中,IP地址由四个部分组成,每个部分是一个0到255之间的整数,各部分之间用点(.)分隔。例如,一个有用的IP地址大概是192.168.1.1。这种格式的优点是易于阅读和排序,同时也方便举行数学计算。每个部分代表一个8位的二进制数,因此整个IP地址可以表示一个32位的二进制数。这种格式也方便网络装备和软件举行解析和处理。
具体写法:
下面的写法是针对给定一个字符串来准确判断是否为有用IPv4地址的正则表达式:
- ^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$
复制代码 假如只是想要简单的从日志等文本文件中抓出类似IPv4地址格式的内容,可以利用下面的正则表达式:
通过这种方式可以抓全相干的类似IPv4点分格式的文本,假如用上面去掉开头^和结尾$,有的时间匹配的情况的结果大概会存在截断的结果,从日志分析上看,还不如下面这个短的方式来的方便。
但是,
要留意,不是所有的地方都会支持各种特别简写的方式,好比:
简单的[0-9] 不是所有地方都支持\d的简写方式,现实应用的时间要留意识别,制止堕落。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|