正則表達式——字符串匹配

正則表達式

1. 字符組[字符]

  在同一位置可能出現的各類字符組成了一個字符組python

  ex:[0-9]——表示0-9中任意一個數字正則表達式

    [a-f]——表示a-f之間任意一個字母ip

2. 元字符

\w 匹配字母或數字或下劃線
\W 匹配除字母或數字或下劃線之外的字符
\d 匹配數字
\D 匹配非數字
\s 匹配任意的空白字符
\S 匹配非空白字符
\n 匹配一個換行符
\t 匹配一個製表符
\b 匹配一個單詞的結尾
^ 匹配字符串的開始
$ 匹配字符串的結束
. 匹配除換行符以外的任意字符
() 分組——對多個字符組總體作量詞約束的時候用到
a|b 匹配字符a或b。從左到右匹配,匹配上就不繼續匹配了(應該把長字符串放左邊)
[...] 匹配字符組中的任意字符
[^...] 除了字符組內其餘都匹配

 

3. 量詞

* 重複零次或更屢次次
+ 重複一次或更屢次
重複零次或一次
{n} 重複n次
{n,} 重複n次或更屢次
{n,m} 重複n到m次


4. 轉義

正則 待匹配字符 匹配結果 說明
\d \d False 正則表達式中的元字符\d表示數字
\\d \d True \轉義以後變爲\\
"\\\\d" "\\d" True python裏面,字符串中'\'需轉義。每個'\'都須要轉義一次

r'\\d'字符串

r'\d' True r + 字符串,讓整個字符串不轉義

5. 貪婪/惰性匹配

  量詞後加上 ‘?’ —— 貪婪匹配table

正則 待匹配字符 匹配結果 說明
<.*> <script>...<script> <script>...<script>

默認爲貪婪匹配tab

匹配儘量多的字符字符

<.*?> <script>...<script>

<script>數字

<script>script

加上'?'以後,匹配儘量少的字符ab

將貪婪匹配轉爲非貪婪匹配(惰性匹配)

 

  最經常使用:

      .*?  ——  匹配儘可能少的任意字符

       .*?abc —— 一直匹配,遇到abc就中止

6. ?的用法

  (1)?—— 表示量詞,重複零次或一次

  (2)量詞+?—— 儘量少的匹配

  (3)?:+分組—— 取消分組優先

相關文章
相關標籤/搜索