perl正则表达式
发布时间:2020-12-16 00:35:27 所属栏目:大数据 来源:网络整理
导读:0,正则表达式是一组字符串的抽象. 1,匹配操作符 =~、!~: ?=~检验匹配是否成功,!~则相反 2,正则表达式有几种使用方法: ? 第一种:最常用的一种,就是确定一个字符串中是否匹配某个模式,/foo/ ? 第二种:如果你能将一个模式在字符串中定位,你就可以用别的东
0,正则表达式是一组字符串的抽象.
1,匹配操作符 =~、!~:
?=~检验匹配是否成功,!~则相反
2,正则表达式有几种使用方法:
? 第一种:最常用的一种,就是确定一个字符串中是否匹配某个模式,/foo/ ? 第二种:如果你能将一个模式在字符串中定位,你就可以用别的东西来替换它 ????????? s/foo/bar/,表示将 foo 替换成 bar
? 【 a {} represents any pair of delimiters you choose,if"/" is the delimiter then the initial m is optional
?//? m{}??? Pattern match?? ??qr{}?????? Pattern??? ?? s{}{}???? Substitution??? ??tr{}{}?? Transliteration?】 3,if($line =~ /http:/) ???? =~ 符号(模式绑定操作符)告诉 Perl 在 $line 中寻找匹配正则表达式“http:”, 如果你不是用=~ 操作符,Perl 会对缺省
字符串进行操作。缺省的字符串就是 $_ 这个特殊标量。实际上,$_ 并????? 不是仅仅是模式匹配的缺省字符串。其
它的一些操作符缺省也使用 $_ 变量。 ???? 因此可以简化成:if(/http:/) 4,+意味着一个或多个相同的字符 ?? []意味着匹配一组字符中的一个,[^]这里的^表示后边的字符表的反集。
5,锚模式:
??? ^ 或 A : 仅匹配串首 ??? $ 或 Z : 仅匹配串尾? ??? b????? : 匹配单词边界? ??? B????? : 单词内部匹配
6,量词{}:
?? ? 如果在括弧中只有一个数字,这个数字就指定了最少和最多匹配次数。 ? 有最少次数和逗号,但省略了最大次数,那么最大次数将被当作无限次数 ? d{7,11} 将匹配最少 7 位数字,但不会多于 11 位数字。
? +,代表 {1,},意思为“最少一次”
? *,表示 {0,}, ? ? 表示 {0,1},表示“零或一次”
? 注意:
??????? 缺省时量词作用在它前面的单个字符上,因此 /bam{2}/ 将匹配 “bamm”而不是“bambam”。 ??? 如果你要对多于一个字符使用量词,你需要使用圆括弧。 ??? 因此为了匹配“bambam”需要使用 /(bam){2}/。 7,字符范围转义: ???? 转义字符?? 描述??????????????????? ?? 范围? ?d??? 任意数字 ?????[0-9]? ?D??? 除数字外的任意字符? ???[^0-9]? ?w??? 找寻符合英文字母,数值的字符串 ??[_0-9a-zA-Z]? ?W??? 找寻符合非英文字母,数值字符的字符串?[^_0-9a-zA-Z]? ?s??? 空白 ?????[ rtnf]? ?S??? 非空白 ?????[^ rtnf]
8,匹配任意字符:
??? 字符"."匹配除换行外的所有字符,通常与*合用。 9,小结: ?特殊字符 ?描述? ?() ??模式内存? ?+ * ? {} ?出现次数? ?^ $ b B? 锚? ?| ??选项,可以连接多个模式 10,模式匹配选项: ??? 选项 描述? ??? g??? 匹配所有可能的模式 全局修饰符 ??? i??? 忽略大小写? ??? m??? 将串视为多行? ??? o??? 只赋值一次? ??? s??? 将串视为单行? ??? x??? 忽略模式中的空白? ? 11,转换操作符,并不使用正则表达式
???? tr/searchlist/replacementlist/
??? (1)按照默认设置,转换操作符用于对变量$_进行搜索和修改 ??? (2)tr/A-Z/a-z/; change all? uppercase to lowercase ??? (3)如果replacementlist是空的,或者与searchlist相同,那么tr///将计算并返回匹配的字符。目标字符串并不被修改
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |