Pythonの正規表現のfindAll()メソッドの試合(個人的なメモ)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/yu_1628060739/article/details/102767158

findAll()マッチング方法を使用します

説明:
       のfindAll()メソッドが使用されているリストの形式で文字列全体とリターンの正規表現に合わせてすべての文字列を検索するためマッチが成功した場合。リストには、それ以外の場合は、空のリストを返す、返されたマッチング構造が含まれています。

re.findall(pattern,string,flags)

ここに画像を挿入説明
例1:

import re
pattern=r'mr_\w+'
string='MR_SHOP mr_shop'
match=re.findall(pattern,string,re.I)
print(match)

結果

['MR_SHOP', 'mr_shop']

例2:

import re
string='项目名称MR_SHOP mr_shop'
match=re.findall(pattern,string,re.I)
print(match)

結果

['MR_SHOP', 'mr_shop']

注意:

import re
pattern=r'[1-9]{1,3}(\.[0-9]{1,3}){3}'
str1='127.0.0.1 192.168.1.66'
match=re.findall(pattern,str1)
print(match)

結果

['.1', '.66']

パケットが含まれている場合は指定されたパターン文字列のテキストリストは、パケットの試合で返されます。(即ちのみ括弧内のパターン文字列と一致します)

pattern=r'(\.[0-9]{1,3}){3}'
str1='127.0.0.1 192.168.1.66' 
match=re.findall(pattern,str1)
print(match)

結果:

['.1', '.66']

ここ分析、パターン文字列([0-9] {1,3}){3}を意味します。
       まず、[0-9]と\ dは意味が同一マッチ数を表明して、{1,3}は3回まで、少なくとも一度マッチ前の文字を表します。{3}三回前の文字に一致します。
ここにある:一致(点)数と表面が3個まで一つまたは二つであってもよく、数字(0〜9任意であってもよい)の背後に開始します。すなわち、次のような状況:
0.05または0.66、または0.192など。
        {3}三回、すなわち、三つの連続このタイプ、「127.0.0.1の192.168.1.66」、.0.0.1を見ても.168.1.66連続3回三回登場することができると一致します。だから、結果:[ '1' '66']。

パケットが一致した場合、以下のようにそれ以外の場合は内部の必要が読んで:

最初に書き込ま:
グループ化括弧の対を使用して、全体のパターン文字列を。そして最初の要素の各要素(タプル)のリストを返します。

import re 
pattern=r'([1-9]{1,3}(\.[0-9]{1,3}){3})'
str1='127.0.0.1 192.168.1.66'
match=re.findall(pattern,str1)
for i in match:
    print(i[0])

結果:

127.0.0.1
192.168.1.66

第二の方法:
プラス:?キャプチャで元のグループは、非キャプチャグループにグループを置きます。

import re 
pattern=r'[1-9]{1,3}(?:\.[0-9]{1,3}){3}'
str1='127.0.0.1 192.168.1.66'
match=re.findall(pattern,str1)
print(match)
['127.0.0.1', '192.168.1.66']

完成しました...

おすすめ

転載: blog.csdn.net/yu_1628060739/article/details/102767158