Python中的正規表示式探秘1

2021-08-03 16:53:53 字數 1755 閱讀 2284

正規表示式中的特殊字元:

$匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$。

( )標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。

*匹配前面的子表示式零次或多次。要匹配 * 字元,請使用 \*。

+匹配前面的子表示式一次或多次。要匹配 + 字元,請使用 \+。

.匹配除換行符 \n 之外的任何單字元。要匹配 . ,請使用 \. 。

[標記乙個中括號表示式的開始。要匹配 [,請使用 \[。

?匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。要匹配 ? 字元,請使用 \?。

\將下乙個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。

^匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。

{標記限定符表示式的開始。要匹配 {,請使用 \{。

|指明兩項之間的乙個選擇。要匹配 |,請使用 \|。

re.i

re.ignorecase

讓正規表示式忽略大小寫,這樣一來,[a-z]也可以匹配小寫字母了。此特性和locale無關。

re.l

re.locale

讓\w、\w、\b、\b、\s和\s依賴當前的locale。

re.m

re.multiline

影響'^'和'$'的行為,指定了以後,'^'會增加匹配每行的開始(也就是換行符後的位置);'$'會增加匹配每行的結束(也就是換行符前的位置)。

re.s

re.dotall

影響'.'的行為,平時'.'匹配除換行符以外的所有字元,指定了本標誌以後,也可以匹配換行符。

re.u

re.unicode

讓\w、\w、\b、\b、\d、\d、\s和\s依賴unicode庫。

re.x

re.verbose

運用這個標誌,你可以寫出可讀性更好的正規表示式:除了在方括號內的和被反斜槓轉義的以外的所有空白字元,都將被忽略,而且每行中,乙個正常的井號後的所有字元也被忽略,這樣就可以方便地在正規表示式內部寫注釋了。

#!/usr/bin/python

import re

line = "cats are smarter than dogs"

matchobj = re.match( r'(.*) are (.*?) .*', line, re.m|re.i)#在字串前加上r 表示原生字元

if matchobj:

print "matchobj.group() : ", matchobj.group()

print "matchobj.group(1) : ", matchobj.group(1)

print "matchobj.group(2) : ", matchobj.group(2)

else:

print "no match!!"

探秘正規表示式

今天有個同事問起,php中的正則語法為什麼和perl中的正則語法如此的類似,是誰相容誰?到底正則是什麼?所以有了這篇文章 在我們的日常工作中,無論是在php中用正則匹配字串,還是nginx用正則重寫url,還是在vi中查詢字元,總是,用處很多也很方便。那到底什麼是正規表示式?為什麼各個應用中正則的語...

python中的正規表示式

正規表示式是一種用來匹配字串的強有力的 它的設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,我們就認為它 匹配 了,否則,該字串就是不合法的。因為正規表示式也是用字串表示的,所以,我們要首先了解如何用字元來描述字元。在正規表示式中,如果直接給出字元,就是精確匹配。用 d可以匹配...

Python中的正規表示式

在使用python製作爬蟲之前,我們必須要對python的正規表示式有一定的了解,在python中使用正規表示式要匯入re包 d匹配數字1 9 w匹配字元 匹配集合裡面的字元 匹配前面出現的正規表示式1次或多次 表示匹配任意乙個字元,除換行符除外,x.匹配xy23中的xy,若是x.則匹配出xy2 表...