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

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

乌拉乌拉~
リリース: 2018-08-22 16:54:00
オリジナル
1196 人が閲覧しました

この記事では、正規表現に関する高度な知識を詳しく紹介し、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート