SAS_正則表達式 字符意義


正則表達式必知必會
正則表達式用處:搜索與替換
簡單的開始:
1.匹配單個字符:
.匹配任何一個字符(除去換行符)
\加上一個特殊字符:如\\,\d,\w,
2.匹配一組字符:
[]不匹配任何字符,自用來定義一個字符集合;如[ab]:必須匹配a或b,可用來處理大小寫問題[Aa],當然也可以用\i(SAS里面的);[0-9]匹配0到9的數字,[A-Z]匹配A到Z的英文字母;[A-Za-z0-9]表示A-Z和a-z和0-9;[^0-9]表示不匹配0-9的任意數字;若要匹配[]本身,需要反斜杠\[ \]
注:-連字符是特殊的元字符,但只能用在[]之間,在[]之外只能與-匹配,因此-不需要特殊匹配。
3.使用元字符:
元字符不用做元字符時,必須\轉意,如\[、 \\
元字符分為兩種:(1)匹配文本比如.(2)匹配正則表達式的語法要求的如:[]
匹配空白字符:\n:換行符;\r回車符;\t制表符[Tab鍵];在Window操作系統中需要\r\n\r\n來匹配兩條記錄中的空白行,在linux\Unix中是\n\n即可
匹配數字:\b任何一個數字字符相當於[0-9];\D任何一個非數字字符相當於[^0-9]
\w任何一個字母數字字符或者下划線相當於[A-Za-z0-9_];\W任何一個非字母數字字符或者下划線相當於[^A-Za-z0-9_]
匹配空白字符:\s任何一個空白;\S任何一個非空白字符
匹配十六進制:\0
匹配八進制:\0開頭
4.重復匹配
+匹配一個或多個字符
*匹配零個或多個字符
?匹配零個或一個字符
{}匹配的重復次數 如\d{0,3}:0,1,2或3個數字;\d{3,}至少重復3次及以上的數字字符
注:* +都是貪婪型字符,匹配的結果是多多益善而不是適可而止,盡可能從文本的開頭匹配到結尾,有時將多個匹配結果當成一個
但*? +? {n,}?是懶惰性表示方法,寫法簡單,找到一個匹配的即停止(這里容易誤解,見P49頁)
5.位置匹配
\b單詞邊界:如:the cat scatterted....,匹配cat:\bcat\b,這里的\b是匹配這樣一個位置,位於一個能用來構成單詞的字符和一個不能用來構成單詞的字符;
\D不匹配單詞的邊界
^匹配字符串的開頭位置

7.子表達式
()是元字符,將子表達式括起來
簡化重復表達:(\d{1,3}\.){3}
避免誤解:19|20\d{2} 與(19|20)\d{2}意義是不同的;因為|將左右兩邊當成完整的兩部分
子表達式的嵌套
8.回溯引用:前后一致匹配
回溯連續匹配:
如:this is is a cat;
匹配:[ ]+(\w+)[]+\1
這里的\1是模式里的第一個表達式,\2表示模式里面的第二個表達式,上述將匹配同一個單詞連續兩次重復出現;
注:回溯引用只能引用模式里面的子表達式,用()括起來的;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM