正則表達式

1、定義

  • 正則表達式是對字符串操做的一種邏輯公式,通常使用正則表達式對字符串進行匹配和過濾
  • 正則表達式由普通字符和元字符組成
  • 優勢:靈活,功能性強,邏輯性強
  • 缺點:上手難,一旦上手,會愛上這個東西
  • 工具:各大文本編輯器通常都有正則匹配功能。在線測試網址:http://tool.chinaz.com/regex/

2、普通字符

    普通字符包含大小寫字母、數字。在匹配普通字符時直接寫就好。好比"abc"匹配的就是」abc」python

3、元字符

1. 字符組

    用[ ]括起來,在[ ]中出現的內容會被匹配。例如:[abc]匹配a或b或c正則表達式

  • [a-z]:匹配a到z之間的一個字母
  • [0-9]:匹配全部阿拉伯數字的一個
  • [a-zA-Z0-9]:匹配a-z或A-Z或0-9其中的一個

2. 簡單元字符

  • .:匹配換行符之外的任意字符
  • \w:匹配字母或數字或下劃線
  • \s:匹配任意的空白符
  • \d:匹配數字
  • \n:匹配一個換行符
  • \t:匹配一個製表符
  • \b:匹配一個單詞的結尾
  • ^:匹配字符串的開始
  • $:匹配字符串的結尾
  • \W:匹配非字母或數字或下劃線
  • \D:匹配非數字
  • \S:匹配非空白符
  • a|b:匹配字符a或字符b
  • ():匹配括號內的表達式,也表示一個組
  • [...]:匹配字符組中的字符
  • [^...]:匹配除了字符中字符的全部字符

3. 量詞

  • *:重複0次或更屢次
  • +:重複一次或更屢次
  • ?:重複0次或一次
  • {n}:重複n次
  • {n, }:重複n次或更屢次
  • {n, m}:重複n到m次

4、貪婪匹配與惰性匹配

1. 貪婪匹配

    量詞中的*,+,{}都屬於貪婪匹配,就是儘量多的匹配到結果編輯器

str:hello world
reg: h.*
此時匹配的結果:hello world
str:<div>hello</div>
reg:<.*>
此時匹配的結果:<div>hello</div>

 

2. 惰性匹配

    在使用.*後面若是加了"?"則是儘量的少匹配工具

str:hello world
reg:h.*?
此時匹配的結果:h

 

str:<div>hello</div>
reg:<.*?>
此時匹配的結果:
<div>
</div>

 

 5、分組

    在正則中使用()進行分組。測試

    例如要匹配一個相對複雜的身份證號。身份證號分紅兩種。老的身份證號有15位,而新的身份證號有18位。而且新身份證號結尾多是xspa

正則爲:
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

6、轉義

    在正則表達式中,有不少有特殊意義的元字符,好比\n和\s等。若是要在正則中匹配正常的"\n"而不是換行就須要對"\"進行轉義。code

    同理,在python中,對於\n,\s等也是有特殊意義的,若是要獲得"\n"也須要對"\"進行轉義,因此,若是須要匹配字符\n,在正則表達及python表達中須要寫成以下表格形式。blog

目標 正則 python
\n \\n \\\\n

表1  "\n"轉義字符串

    此時能夠利用r"\n"不轉義,即上表中python中正則表達可寫爲:r"\\n"get

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息