Pythonのビルトインモジュール入門 - モジュール再

Pythonのビルトインモジュール入門 - モジュール再

1、REモジュール

(1)定期的に何ですか?

 一緒に特別な意味や方法を説明した文字列(正規表現と呼ばれる)を持っているいくつかのシンボルの組み合わせを定期的に使用。または:定期的なルールは、物事のクラスを記述するために使用されます。(Pythonでは)、それは、Pythonで埋め込まれ、再モジュールによって達成されます。正規表現パターンは、Cで書かれたバイトコードの系列、にコンパイルした後、マッチングエンジンによって実行されます。

メタキャラクタ 一致したコンテンツ
\ワット マッチ(中国を含む)の文字、または数字、またはアンダースコア
\ W マッチング(中国語が含まれている)、または数字、またはアンダースコア以外のアルファベット
\ sの 空白にマッチします
\ S 任意の非空白文字にマッチします
\ dは マッチング番号
\ D 非数値のマッチング
\ A 文字列一致の先頭から
\ Z それは、行の前のラップの唯一のマッチング結果であれば、文字列の末尾にマッチします
\ nは 改行にマッチします
\トン マッチングタブ
^ 文字列の先頭にマッチします
$ 文字列の末尾
改行以外の任意の文字と一致re.DOTALLフラグが指定されている場合、それは任意の文字が改行を含んで一致します。
[...] 文字の文字セットと一致します
... 文字セットの文字以外のすべての文字にマッチします
* 左にゼロ以上の文字に一致します。
+ 左に1文字以上の文字と一致します。
左、非貪欲な方法に0または1文字に一致します。
{N} 正確にn個前の表現と一致します。
{N、M} N m回前の定義セグメントによって正規表現と一致するように、貪欲方法
から またはbにマッチします
() 括弧内の式と一致する、また基を表します

-------------------------------------------------- ----------------------------- -------------------一致モード--------------------------------------------

import  re 

<1>ワット文字、数字、アンダースコア、中国\

print(re.findall("\w","小明-Marry_dsb123啸天吃D早餐"))   # \w 字母.数字.下划线.中文 

<2> \ Wの代わりに、文字、数字、アンダースコア、中国

print(re.findall("\W","小明-Marry_dsb123啸天吃D早餐"))   # \w 不是字母.数字.下划线.中文 

<3> \ dのマッチ番号

print(re.findall("\d","十10⑩"))                       #  \d 匹配数字   

<4> \ Dは、非デジタルに一致します

print(re.findall("\D","十10⑩"))                       # \D 匹配非数字

<5> \文字列の先頭からのマッチは、任意の従来^ Aで始まります

print(re.findall("\Aa","asfdasdfasdfalex"))
print(re.findall("^a","alex"))                        # 以什么开头  

<6> Z \は、文字列の末尾には、一般的に$終わるものと一致します

print(re.findall("d\Z","asfdasdfasdfalex"))
print(re.findall("x$","alex"))                        # 匹配什么结尾  

<7> \ nは改行

print(re.findall("\n","alex\nwusir"))

<8> \トンマッチングタブ

print(re.findall("\t","alex\twusir"))

<9>の文字列に対応する文字列と一致します

print(re.findall("alex","alex\twusiralex"))

<10> [...]は、文字の文字セットと一致しました

print(re.findall('[0-9]',"小明-Marry_dsb123啸天吃D早餐"))                 
print(re.findall('[a-z]',"小明-Marry_dsb123啸天吃D早餐"))
print(re.findall('[A-Z]',"小明-Marry_dsb123啸天吃D早餐"))

<11> ^ []非文字の文字セットと一致しました

print(re.findall("[^0-9a-z]","123alex456"))  

<12> *貪欲左に一致する0個以上の文字に一致します

print(re.findall("a*","marry,aa,aaaa,bbbbaaa,aaabbbaaa"))    # 匹配*左侧字符串0次或多次  贪婪匹配

<13> + 1以上のマッチング左端の文字貪欲マッチング

print(re.findall("a+","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))  匹配左侧字符串一次或多次  贪婪匹配 

<14>?左非欲張りマッチにゼロまたは1つの文字に一致します

print(re.findall("a?","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))  # 匹配?号左侧0个或1个 非贪婪匹配

<15> {n}は、n個の一致の正確左前発現

print(re.findall("[0-9]{11}","18612239999,18612239998,136133333323")) # 指定查找的元素个数 

<16> {N、M}は、正規表現定義断片の先頭にMと一致n回

print(re.findall("a{3,8}","alex,aaaabbbaaaaabbbbbbaaa,aaaaaaaaabb,ccccddddaaaaaaaa")) 

<17> | bがaまたはbにマッチします

print(re.findall("a|b","alexdsb"))

<18>()は、括弧内の式に一致するだけでなく、グループを表します

print(re.findall("<a>(.+)</a>","<a>alex</a> <a>wusir</a>"))     #分组  
print(re.findall("<a>(.+?)</a>","<a>alex</a> <a>wusir</a>"))   #控制贪婪匹配 

<19>。定義さre.DOTALLとして改行以外の任意の文字に一致し、改行を一致させることができます

print(re.findall("a.c","abc,aec,a\nc,a,c"))           # 匹配任意一个字符串(\n除外) 
print(re.findall("a.c","abc,aec,a\nc,a,c",re.DOTALL))

<20>。の無い任意の関数があります

print(re.findall("-\d+\.\d+|-[0-9]|\d+",s))

<21> \ sがスペースにマッチします

print(re.findall("\s","alex\tdsbrimocjb"))            # \s 匹配空格

<22> \ Sは非空白一致します

print(re.findall("\S","alex\tdsbrimocjb"))            # \s 匹配非空格

質問:

有如下字符串:'alex_sb ale123_sb wu12sir_sb wusir_sb ritian_sb' 的 alex wusir '找到所有带_sb的内容

回答:

s = 'alex_sb ale123_sb wu12sir_sb wusir_sb ritian_sb'print(re.findall("(.+?)_sb",s))

-------------------------------------------------- ----------------- -------------------------------一般的な方法---------------------------------

(1)のfindAllすべてのリターンにリストを見つけます

print(re.findall("alex","alexdsb,alex_sb,alexnb,al_ex"))

(2)検索停止のどこにでも見出さ一致する文字列のために、そのオブジェクトを返す。一致するコンテンツが.groupなければならないために()を求めます

print(re.search("a.+","lexaaaa,bssssaaaasa,saaasaasa").group())

(3)試合は、文字列の先頭から一致します

print(re.match("a.+","alexalexaaa,bssssaaaasa,saaasaasa").group())

質問

検索と一致するとの違い

どこでも検索から検索

それが見つからないことを続行しない場合は、最初からマッチを探します

両方のグループ()でそれを表示します

(4)スプリット - スプリット] [必要があります

print(re.split("[:;,.!#]","alex:dsb#wusir.djb"))

(5)サブ - 交換

s = "alex:dsb#wusir.djb"
print(re.sub("d","e",s,count=1))

(6)complie - マッチングルールの定義

s = re.compile("\w")
print(s.findall("alex:dsb#wusir.djb"))

(7)finditerは - イテレータを返します

s = re.finditer("\w","alex:dsb#wusir.djb")   # 返回的就是一个迭代器
print(next(s).group())
print(next(s).group())
for i in s:
    print(i.group())

(8)検索 - パケットPに命名?

ret = re.search("<(?P<tag_name>\w+)>\w+</\w+>","<h1>hello</h1>")
ret = re.search("<(?P<tag_name>\w+)>(?P<content>\w+)</\w+>","<h1>hello</h1>")
print(ret.group("tag_name"))
print(ret.group("content"))

おすすめ

転載: www.cnblogs.com/caiyongliang/p/11539822.html