学习“Perl基础教程:正则表达式”之摘录
1.
? ? =~ 將正則式去匹配字符串,生成的結果是,如果正則式在字體串獲得了匹配,值為真;否則,值為假。
2.? 默認的分隔符//也可以用'm'加任意字符代替:
? ? ?"Hello World" =~ m!World!;? ?#matches, delimited by '!'
? ? ?"Hello World" =~ m{World};? ?#matches, note the matching '{}'
? ? ?"/usr/bin/perl" =~ m"/perl";? ?#matches after '/usr/bin', '/' becomes an ordinary char
3.正則表達式區分大小寫,正則式對空格敏感
4.如果正則式在字符串的多個位置都匹配,Perl首先匹配的是字符串的第一個位置。
5.不是所有的字符都能用在正則式去匹配,如下的元字符就是:
{}[]()^$.|*+?\要匹配這些元字符,需要在元字符前使用反斜杠"\"做轉義
"2+2=4" =~ /2+2/; #doesn't match, + is a metacharacter "2+2=4" =~ /2\+2/; #matches, \+ is treated like an ordinary +? 6.匹配式中有變量時,變量的值會先擴展,再進行匹配
? 7.^:在字符串的開始處匹配;? ? ? $:在字符串的結尾處匹配;? ? ??
? ? ?^和$還可以同時用,結果是正則式完全匹配整個字符串
? 8.字符類,表示可能字符的集合,而不是一個字符。字符類使用方括號[...]來表示
? 9.'i':對于不區分大小寫的匹配,可以在正則式中添加修飾符'i'。
? 10.'-':字符類中的范圍操作符;? ? ? ? ? ? 如果'-'是字符類的第一個或最后一個字符,則它表示原義,不是范圍操作符。
? 11.\d: 匹配數字,包括[0-9],以及非羅馬數字;
? ? ? ?\s: 匹配空格,包括[\ \t\r\n\f]等;
? ? ? ?\w:匹配一個單詞
? ? ? ?\D:\d的反字符類,表示數字外的其他字符
? ? ? ?\S:\s的反字符類,表示任何非空格的字符
? ? ? ?\W:\w的反字符類,表示任何非單詞的字符
? ? ? ?'.': '.'表示匹配除"\n"(換行符)外的任何字符。但使用了//s時不起作用
? ? ? ?\N:和'.'類似,匹配除換行符外的任何字符,和//s起不起作用無關。
? 12./\d\d:\d\d:\d\d/? ? ?匹配hh:mm:ss時間格式
? ? ? ?/[\d\s]? ? ?匹配任意數字或空格
? ? ? ?/\w\W\w/;? ?匹配單詞,非單詞,單詞模式
? ? ? ?/..rt/;? ? ? ?匹配兩個字母后跟著'rt'
? ? ? ?/end\./;? ? 匹配'end.'
? ? ? ?/end[.]/;? ? 匹配'end.'
? 13.(//): no modifiers
? ? ? ?(//s): s modifier
? ? ? ? ? ? ? ? 將字符串視為單一的長行
? ? ? ? ? ? ? ? '.'? 包括"\n"的任意字符? ? ? ? ? ? ? ?^ 一行字符串的開始? ? ?$ 一行字符串的結尾
? ? ? ? (//m): m modifier
? ? ? ? ? ? ? ? 將字符串視為多行的集合? ??
? ? ? ? ? ? ? ? '.' 除"\n"外的任意字符? ? ? ? ? ? ? ? ?^ 字符串內任意行的開始? ?$ 字符串內任意行的結尾
? ? ? ? (//sm): both s and m modifiers
? ? ? ? ? ? ? ? ?將字符串視為單一長行,但進行多檢測
? ? ? ? ? ? ? ? ?'.' 包含"\n"的任意字符? ? ? ? ? ? ? ? ? ^ 字符串內任意行的開始? ? $ 字符串內任意行的結尾
? 14.在使用//m時,還可以使用錨符號:
? ? ? ?\A:匹配字符串的開始? ? ? ? \Z:匹配字符串的結尾,包括換行符? ? ?\z:僅匹配字符串的結尾
? 15.|? :單詞或字符串的選擇元字符
? 16.() :分組元字符,可以將正則式的部分作為一個單元
? ?17. 分組元字符()還有另一個功能:
? ? ? ? ? 將匹配的字符才能夠字符串中提取出來。
? 18.$+ 指最高序號的變量
? 19.Perl除了提供匹配內容外,還通過數組@-和@+提供的匹配的位置信息:
? ? ? $-[0] : 整個匹配結果在字符串中的起始位置
? ? ? $-[n] : 第$n個匹配結果在字符串中的起始位置
? ? ? $+[0] : 整個匹配結果在字符串中的結束位置
? ? ? $+[n] : 第$n個匹配結果在字符串中的結束位置
? 20.?:匹配一次或零次;
? ? ? ? * : 匹配零次或任意次
? ? ? ? + : 匹配以此或任意次;
? ? ? ? ?{} : 匹配指定的次數
? ?21.
? ? ? ? a?? means: match 'a' 0 or 1 times. Try 0 first, then 1.
? ? ? ? a*? means: match 'a' 0 or more times, i.e., any number of times, but as few times as possible
? ? ? ? a+? means: match 'a' 1 or more times, i.e.,at least once, but as few times as possible.
? ? ? ? a{n,m} means: match at least n times, not more than m times, as few times as possible.
? ? ? ? a{n,}? means: match at lease n times, but as few times as possible
? ? ? ? a{n}?means:match exactly n times.Becase we match exactly n times,a{n}? is equivalent to a{n} and is just there for notainal consistency.
? ?22. g 和 pos()一起配合使用,能搜索整個文本
? ?23. 搜索替換的語法:? s/regexp/replacement/modifiers
? ?24.\l:將下一字符轉換成小寫? ? ? ? \u:將下個字符轉換成大寫
總結
以上是生活随笔為你收集整理的学习“Perl基础教程:正则表达式”之摘录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习pcre之摘录
- 下一篇: 学习《apache源代码全景分析》之摘录