ホームページ >バックエンド開発 >Python チュートリアル >Pythonの正規表現を詳しく解説(解析例)

Pythonの正規表現を詳しく解説(解析例)

乌拉乌拉~
乌拉乌拉~オリジナル
2018-08-22 16:54:001186ブラウズ

この記事では、正規表現に関する高度な知識を詳しく紹介し、Pythonプログラミングで発生する可能性のあるいくつかの問題を書き留めます。

#最初の高度な知識ポイント:


##文字列の分割使用文字列を分割するための正規表現は、固定文字を使用するよりも柔軟です。通常の分割コードを参照してください:

>>> 'a b   c'.split(' ')
['a', 'b', '', '', 'c']

まあ、連続したスペースは認識できません。正規表現を使用してみてください:

>>> re.split(r'\s+', 'a b   c')
['a', 'b', 'c']

スペースがたくさんあるので、普通に分割できます。参加、試行:

>>> re.split(r'[\s\,]+', 'a,b, c  d')
['a', 'b', 'c', 'd']

再度参加; 試行:

>>> re.split(r'[\s\,\;]+', 'a,b;; c  d')
['a', 'b', 'c', 'd']

ユーザーが一連のタグを入力する場合は、次回配列するときに正規表現を使用して不規則な入力を正しい入力に変換することを忘れないでください。

グループ化正規表現には、単純に一致するかどうかを判断するだけでなく、部分文字列を抽出する強力な機能もあります。 ()内は抽出対象のグループです。例:

^(\d{3})-(\d{3,8})$

はそれぞれ 2 つのグループを定義しており、一致する文字列市外局番から直接抽出できます。およびローカル番号:

>>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
>>> m
<_sre.SRE_Match object; span=(0, 9), match=&#39;010-12345&#39;
>>>> m.group(0)
&#39;010-12345&#39;
>>> m.group(1)
&#39;010&#39;
>>> m.group(2)
&#39;12345&#39;
グループが正規表現で定義されている場合は、Match オブジェクトの group() メソッドを使用して部分文字列を抽出できます。

group(0) は常に元の文字列であり、group(1)、group(2)... は 1 番目、2 番目、... の部分文字列を表すことに注意してください。

部分文字列の抽出は非常に便利です。もっと残酷な例を見てみましょう:

>>> t = &#39;19:05:30&#39;
>>> m = re.match(r&#39;^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]
|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$&#39;, t)
>>> m.groups()
(&#39;19&#39;, &#39;05&#39;, &#39;30&#39;)

この正規表現は法的時間を直接識別できます。ただし、日付の識別など、正規表現を使用して完全に検証できない場合があります。

&#39;^(0[1-9]|1[0-2]|[0-9])-(0[1-9]|1[0-9]|2[0-9]|3[0-1]|[0-9])$&#39;

for

'2-30'

, '4-31' このような違法行為は、正規表現で日付を特定できない、または書き出すのが非常に難しい場合、プログラムが特定に協力する必要があります。 以上がこの記事の内容です。この記事では主に

python の正規表現

に関する知識を紹介します。上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。 関連知識の詳細については、php 中国語 Web サイトの

Python チュートリアル

列を参照してください。

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

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

関連記事

続きを見る