ホームページ  >  記事  >  バックエンド開発  >  Python re正規表現モジュール(正規表現)

Python re正規表現モジュール(正規表現)

WBOY
WBOYオリジナル
2016-06-16 08:43:171352ブラウズ

モジュールの機能は主に文字列やテキストの処理、検索、検索、置換などに使用されます。

基本的な正規表現を確認してください

.: 改行文字を除く任意の単一文字

と一致します

*: 任意の文字に一致します。1 つ、0 個、または複数の文字に一致します。一般に貪欲モード

と呼ばれます。

+: + の前の 1 つ以上の文字

と一致します

|: | の前後の文字

と一致します。

^: 行の先頭と一致します

$: 行末と一致

?: 一致する場所は?先行する 0 文字または 1 文字が複数の文字と一致しません

: 次の文字がエスケープ文字であることを示します

[]: [] 内の任意の 1 文字と一致します。[0-9] は 0 から 9 までの任意の数字と一致することを意味します

(): () 内のコンテンツを全体として扱います

{}: {} 内の回数に従って一致します。100[0-9]{3} は、100 の後の任意の 3 桁の数字 (100-999) と一致することを意味します

で始まるメタキャラクター: Python の

と同等です と同等です
特殊シーケンスシンボル
意味
A
文字列の先頭のみ一致
Z
文字列の末尾のみ一致
b
先頭または末尾の空の文字列と一致します
B
先頭または末尾にない空の文字列と一致します
d
は [0-9]
D
は [^0-9]

は任意の空白文字と一致します: [tnrrv]
S
は空白以外の文字と一致します: [^tnrrv]
w
任意の数字と文字に一致します: [a-zA-Z0-9]
W
数字と文字以外の任意の文字に一致します: [^a-zA-Z0-9]

正規表現構文テーブル

には一致しません に一致します。 のみに一致します を表します と一致します
文法 意味 説明
"." 任意の文字
"^" 文字列の先頭 '^hello' は 'helloworld' に一致しますが、'aaaahellobbbb'
"$" 文字列の終わり 同上
"*"
0 文字以上 (貪欲一致)
f9905dec65b53e7277c4d818a36cc3f5一致b2386ffb911b14667cb8f0f91ea547a7chinaunix6e916e0f7d1e588d4f442bf645aedb2f
"+"
1 つ以上の文字 (貪欲一致)
同上
「?」
0 文字以上 (貪欲一致 )
同上
*?,+?,??
上記 3 つの最初の一致結果を取得します (貪欲でない一致 ) f9905dec65b53e7277c4d818a36cc3f5
と一致しますb2386ffb911b14667cb8f0f91ea547a7
{m,n}
前の文字を m 回から n 回繰り返します。{m} は
にすることもできます
a{6} は 6 a に一致し、a{2,4} は 2 ~ 4 a
{m,n}?
前の文字をできるだけ少なくして m ~ n 回繰り返します
「ああああああ」 ({2,4})2 つの
"\"
特殊文字エスケープまたは特殊シーケンス
[]
は文字セット [0-9]、[a-z]、[A-Z]、[^0]
"|"
または A|B、または操作
(...)
は括弧内の任意の式と一致します
(?#...)
コメント、無視して構いません
(?=...)
... が next と一致する場合に一致しますが、文字列は消費しません。
'(?=test)' は hellotest の hello
(?!...)
... が次に一致しない場合に一致します。
'(?!=test)' hello の後に test が続かない場合は、hello と一致します
(?<=...)
... が前にある場合に一致します (固定長である必要があります)。
'(?<=hello)test' は hellotest の test
と一致します
(?
先頭に ... がなければ一致します (固定長である必要があります)。
'(?test' が hellotest の test
と一致しません

一致する記号と意味

标志 含义
re.I 大文字と小文字を区別する
re.L ローカル設定に従って、w、W、b、B、s、S の一致する内容を変更します
re.M 複数行のマッチングパターン
re.S 「.」メタ文字を改行と一致させる
re.U は Unicode 文字 と一致します
re.X 一致する必要があるパターン内のスペースを無視し、「#」記号を使用してコメントすることができます

テキストコンテンツ (Linux でのパスワードファイルの抽出)

man:x:6:12:man:/var/cache/man:/bin/nologin

re モジュールには 3 つの検索関数があり、各関数は 3 つのパラメーター (一致するモード、一致する文字列、一致するフラグ) を受け取ります。一致するものがあれば、オブジェクト インスタンスが返されます。何も返されません。

findall(): 文字列内の正規表現に一致する文字列を検索し、これらの文字列のリストを返すために使用されます

search(): 文字列全体を検索し、オブジェクト インスタンスを返します

match(): 最初の文字からのみ一致し、それ以降の文字は一致せず、オブジェクト インスタンスが返されます

lovelinux@LoveLinux:~/py/boke$ cat text 
man:x:6:12:man:/var/cache/man:/bin/sh
lovelinux@LoveLinux:~/py/boke$ cat test.py
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).end() 
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
34
lovelinux@LoveLinux:~/py/boke$ vim test.py
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
<_sre.SRE_Match object at 0x7f12fc9f9ed0>

返されたオブジェクト インスタンスには 2 つのメソッドがあります。

start(): レコード

と一致する文字の開始インデックスを返します。

end(): レコード

と一致する文字の終了インデックスを返します。
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
31
34
lovelinux@LoveLinux:~/py/boke$ cat test.py 
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).start()
 print re.search('bin',f).end()

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。