Python正規表現【1】

黄舟
リリース: 2017-02-07 16:28:53
オリジナル
1360 人が閲覧しました

この記事では Python の正規表現について説明します。

これ以上ナンセンスはやめて、最も単純なものから始めましょう:

'.': 改行を除く任意の 1 文字 (ドットのみ) と一致します。

'*' は、前の部分式と 0 回以上一致します (アスタリスクのみ)。

つまり、上記の 2 つの '.*' (ドットスター) の組み合わせは、改行文字を除くすべてに一致します。

「+」: 1 回以上繰り返します。

'?': 0 回または 1 回繰り返します。

'd': 数字と一致します。 [0-9]に相当します。

「w」は、アンダースコアを含む任意の単語文字に一致します。 「[A-Za-z0-9_]」と同等。

「/s」は、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 [fnrtv]

と同等 '^' は入力文字列の先頭と一致します。

「$」は入力文字列の末尾と一致します。

上記は非常に一般的に使用されるものですが、もちろん、さらに一般的に使用されるものがたくさんあります。必要に応じてマニュアルを確認してください。

この説明は十分に直観的ではないので、実験してみてください。 Python で正規表現を使用するのは簡単です。インポート re を直接実行するだけです:

>>> import re

>>>

最初にすべてを一致させてみます:

>>> vlan = 'switchport access vlan 612'
>>> ljds = re.search('.*',vlan).group()
>>> ljds
'switchport access vlan 612'
ログイン後にコピー

番号を再度一致させてください:

>>> ljds = re.search('\d',vlan).group()
>>> ljds
'6'
ログイン後にコピー

「/d」は数値に一致するため、ここで 3 つの数値である「612」を一致させたい場合は、「{3}」を追加できます:

>>> ljds = re.search('\d{3}',vlan).group()
>>> ljds
ログイン後にコピー

'612'

同様に、一致させたい場合は、 13 文字 (スペースを含む):

>>> ljds = re.search('[\w\s]{13}',vlan).group()
>>> ljds
'switchport ac'
ログイン後にコピー

また、正規表現の量指定子には貪欲モードと非貪欲モードが含まれることにも言及したいと思います。貪欲とは、最大値を取得し、できるだけ多くの一致を照合することです。非貪欲モードはその逆です (デフォルトは貪欲モードです)。例:

上記は 13 文字に一致します。2 ~ 10 文字に一致するように記述されている場合は、次のように記述します。つまり、2 文字に一致するのか、10 文字に一致するのか。デフォルトは貪欲モードなので、最大値と一致します:

>>> ljds = re.search('[\w\s]{2,10}',vlan).group()
>>> ljds
'switchport'
ログイン後にコピー

非貪欲モード、つまり最小値一致に切り替えるには、量指定子の後に疑問符 '?' を追加します:

>>> ljds = re.search('[\w\s]{2,10}?',vlan).group()
>>> ljds
'sw'
ログイン後にコピー

次に、「capture」を紹介します。 ":

(exp): 一致するexp。

(?=exp): exp の前の位置と一致します。

(?<=exp): exp の後の位置と一致します。

>>

OK、これを学習した後、前にルーター名を取得した正規表現を見てください:


>>> ljds = re.search(&#39;(access)&#39;,vlan).group()
>>> ljds
&#39;access&#39;
ログイン後にコピー
上記は Python 正規表現の内容です [1]。 PHP 中国語 Web サイト (www.php.cn) に注意してください。


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