ホームページ  >  記事  >  バックエンド開発  >  Pythonの正規表現を詳しく解説

Pythonの正規表現を詳しく解説

小云云
小云云オリジナル
2017-12-18 15:05:401979ブラウズ


正規表現とは、文字列の集合を簡潔に表現するために使用される表現です。この記事では主に Python の正規表現について詳しく説明します。お役に立てれば幸いです。

[^]非文字セット、単一文字の除外範囲[^abc] / code> は、非 a、非 b、または非 c を意味します<td><br></td>*+1 または前の文字の無制限の拡張
演算子 説明 インスタンス
. は任意の単一文字を表します
[ ] 文字セット、単一文字の値 スコープ [abc ] は a または b または c を意味し、[a-z] は a ~ z の単一文字を意味します[abc]表示a或b或c; [a-z]表示a到z单个字符
[^ ] 非字符集,单个字符排除范围 [^abc]表示非a或非b或非c
* 前一个字符的0次或无限次扩展 abc*表示ab、abc、abcc、abccc...
+ 前一个字符的1次或无限次扩展 abc+表示abc、abcc、abccc...
? 前一个字符的0次或1次扩展 abc?表示ab、abc
| 左右表示任意一个 abc|def 表示abc或def
{m} 前一个字符的m次扩展 ab{2}表示abcc
{m,n} 前一个字符的m至n次扩展(含n) ab{1,2}表示abc、abcc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用|操作符 (abc|def)表示abc或def
0、または前の文字の無制限の拡張を意味します abc* は、ab、abc、abcc、を意味しますabccc...

abc+ は、abc、abcc、abccc...

を意味します

?

前の文字の0または1の展開

abc?ab、abcを意味します

|

は左または右のAを意味します

abc|defabc または def を表します


{m}

前の文字の m 倍の展開ab{2} は <code>abcc を表します 前の文字の m から n への展開 (n を含む) ab{1,2} abc, abccは文字列の先頭と一致します$(abc| def) は、abc または def数値を意味し、[0-9]w
{m,n}
^
^abcはabcを示し、文字列の先頭にあります
文字列の末尾と一致します abc$ は abc を意味し、文字列
( ) グループ化マークの末尾にあり、内部的には | 演算子のみを使用できます
d
🎜単語文字に相当します。 [A-Za-z0-9_]🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 上記の演算子に慣れている場合は、次の例は難しくありません。 🎜🎜1. 数値のみを入力できます: ^[0-9]*$🎜🎜2. n 桁の数値のみを入力できます: ^d{n}$🎜🎜3. 少なくとも n 桁の数値のみを入力できます。数値: ^d {n,}$🎜🎜4. m~n 個の数値のみを入力できます: ^d{m,n}$🎜🎜5. 0 で始まる数値および 0 以外の数値のみを入力できます: ^(0 |[1-9 ][0-9]*)$🎜🎜6. 小数点以下 2 桁の正の実数のみを入力できます: ^[0-9]+(.[0-9]{2})?$ 🎜🎜7. 小数点以下 1 ~ 3 桁の正の実数のみを入力します: ^[0-9]+(.[0-9]{1,3})?$🎜🎜8。整数: ^+?[ 1-9][0-9]*$🎜🎜🎜[Python3 正規表現]🎜🎜🎜🎜🎜関数🎜🎜説明🎜🎜🎜🎜🎜🎜re.match()🎜🎜からの一致文字列 A パターンの開始位置。開始位置が正常に一致しない場合、match() は none を返します。 🎜🎜🎜🎜re.search()🎜🎜文字列全体をスキャンし、最初に成功した一致を返します。 🎜🎜🎜🎜re.sub()🎜🎜は、正規表現に一致する文字列内のすべての部分文字列を置換し、置換された文字列を返すために使用されます🎜🎜🎜🎜re.findall()🎜🎜リスト内の文字列を検索します。一致するすべての部分文字列を返します🎜🎜🎜🎜re.split()🎜🎜 正規表現の一致結果に従って文字列を分割し、リストを返します🎜🎜🎜🎜re.fiditer()🎜🎜 文字列を検索し、反復タイプを返します一致結果の各反復要素は一致オブジェクトです🎜🎜🎜🎜
>>> match= re.findall(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;)>>> print(match)
[&#39;100081&#39;, &#39;100086&#39;]>>> match = re.split(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;)>>> match
[&#39;&#39;, &#39;BIT  BIT&#39;, &#39;76&#39;]>>> match = re.split(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;,maxsplit=1)>>> match
[&#39;&#39;, &#39;BIT  BIT10008676&#39;]

>>>for m in re.finditer(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;):       if m:
            print(m.group(0))    
100081100086

re.match と re.search

re.match の違いは、文字列の先頭のみと一致します。文字列の先頭が正規表現と一致しない場合、関数は re の間、None を返します。検索は、一致するものが見つかるまで文字列全体を照合します。 [ ]


文字セット、単一文字の値範囲

Pythonの正規表現を詳しく解説[abc] は a または b または c を意味し、[a-z] は a ~ z の単一文字を意味します

[^ ]非文字セット、単一文字の除外範囲[ ^abc] は、非 a、非 b、または非 c を意味します*0、または前の文字の無制限の拡張abc* は、ab、abc、abcc、abccc...1 または前の文字の無制限の展開前の文字の 0 または 1 つの展開abc? は、ab、 abc|abc|defabcまたはdefを表しますab {2} は、abcc

+
abc+ を意味します> は、abc、abcc、abccc... を意味します。 ?[abc]表示a或b或c; [a-z]表示a到z单个字符
[^ ] 非字符集,单个字符排除范围 [^abc]表示非a或非b或非c
* 前一个字符的0次或无限次扩展 abc*表示ab、abc、abcc、abccc...
+ 前一个字符的1次或无限次扩展 abc+表示abc、abcc、abccc...
? 前一个字符的0次或1次扩展 abc?表示ab、abc
| 左右表示任意一个 abc|def 表示abc或def
{m} 前一个字符的m次扩展 ab{2}表示abcc
{m,n} 前一个字符的m至n次扩展(含n) ab{1,2}表示abc、abcc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用|操作符 (abc|def)表示abc或def

左右はいずれかを表します
{m} 前の文字の m 倍の展開

{m,n}

前の文字の m から n 回の展開を意味します ( n)

ab{1,2 } は、abc、abcc を意味します

^

は文字列の先頭と一致します

^abc は abc を意味し、文字列の先頭にあります

$


は文字列の末尾と一致します

abc$ は abc を意味し、文字列の末尾にあります(abc|def)abc または def を意味しますw単語文字に相当、[A-Za-z0-9_] 上記の演算子に精通している場合は、次のようになります。例は難しくありません。 1. 数値のみを入力できます: ^[0-9]*$2. n 桁の数値のみを入力できます: ^d{n}$3. 少なくとも n 桁の数値のみを入力できます。数値: ^d {n,}$4. m~n 個の数値のみを入力できます: ^d{m,n}$5. 0 で始まる数値および 0 以外の数値のみを入力できます: ^(0 |[1-9 ][0-9]*)$6. 小数点以下 2 桁の正の実数のみを入力できます: ^[0-9]+(.[0-9]{2})?$ 7. 小数点以下 1 ~ 3 桁の正の実数のみを入力します: ^[0-9]+(.[0-9]{1,3})?$8。整数: ^+?[ 1-9][0-9]*$
( ) グループ化マーク、| 演算子のみが内部で使用可能
d 数値、 [0-9]

[Python3 正規表現]


Pythonの正規表現を詳しく解説関数

説明

re.match()からの一致文字列 A パターンの開始位置。開始位置が正常に一致しない場合、match() は none を返します。

re.search()

🎜文字列全体をスキャンし、最初に成功した一致を返します。 🎜🎜🎜🎜re.sub()🎜🎜は、正規表現に一致する文字列内のすべての部分文字列を置換し、置換された文字列を返すために使用されます🎜🎜🎜🎜re.findall()🎜🎜リスト内の文字列を検索します。一致するすべての部分文字列を返します🎜🎜🎜🎜re.split()🎜🎜 正規表現の一致結果に従って文字列を分割し、リストを返します🎜🎜🎜🎜re.fiditer()🎜🎜 文字列を検索し、反復タイプを返します各反復要素は一致オブジェクトです🎜🎜🎜🎜
>>> match= re.findall(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;)>>> print(match)
[&#39;100081&#39;, &#39;100086&#39;]>>> match = re.split(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;)>>> match
[&#39;&#39;, &#39;BIT  BIT&#39;, &#39;76&#39;]>>> match = re.split(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;,maxsplit=1)>>> match
[&#39;&#39;, &#39;BIT  BIT10008676&#39;]

>>>for m in re.finditer(r&#39;[1-9]\d{5}&#39;,&#39;100081BIT  BIT10008676&#39;):       if m:
            print(m.group(0))    
100081100086
🎜 re.match と re.search の違いは、文字列の先頭が一致しない場合にのみ一致します。正規表現。一致が見つからない場合、関数は None を返します。一方、re.search は一致が見つかるまで文字列全体を照合します。 🎜🎜🎜🎜🎜🎜関連推奨事項: 🎜🎜🎜js正規表現について詳細説明🎜🎜🎜🎜php正規表現詳細説明_PHPチュートリアル🎜🎜🎜🎜非常に重要なphp正規表現詳細説明、php正規表現詳細説明🎜🎜

以上がPythonの正規表現を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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