Educoder -- Python 正規表現のグループ化

レベル 1: グループ化

ミッションの詳細

このレベルのタスク: グループ化を使用して中国の携帯電話番号の抽出を完了します。

関連情報

グループ

グループ化を実現するのは非常に簡単で、()それを使用するだけです。正規表現の左側から見ると、最初に表示される左括弧は(最初のグループ化を示し、2 番目の左括弧は 2 番目のグループ化を示します。

 
 
  1. a='<div><a href="https://support.google.com/chrome/?
  2. p=ui_hotword_search" target="_blank">python正则表达式之分组</a>
  3. <p>dfsl</p></div>'
  4. print(re.search(r'<a.*>(.*)</a>',a).group(1))

出力:

 
 
  1. python正则表达式之分组

暗黙的なグローバル グループ化 (つまり、0インデックス番号 によるグループ化) が存在することに注意してください。これは、正規表現全体を照合した結果です。

名前付きグループ

グループに名前を付けると、デフォルトのグループ番号を持つグループに別のエイリアスが追加されます。これは、将来の参照に便利です。
コマンドグループ化の構文形式は次のとおりです。

 
 
  1. (?P<name>正则表达式)

構文形式の文字はP大文字である必要がありPname有効な識別子であり、グループのエイリアスを表します。例えば:

 
 
  1. a = "ip='127.0.0.1',version='1.0.0'"
  2. res = re.search(r"ip='(?P<ip>\d+\.\d+\.\d+\.\d+).*", a)
  3. print(res.group('ip')) #通过命名分组引用分组

出力:

 
 
  1. 127.0.0.1

プログラミング要件

右側のコードを注意深く読み、メソッドのプロンプトに従ってBegin - Endその領域のコードを補足してください。具体的なタスクは次のとおりです。

  • 11数字を含む携帯電話番号を抽出し、文字列内の他の記号をフィルターで除外します。

試験指導

コードを補足した後、「評価」をクリックすると、作成したコードがプラットフォームによってテストされ、結果が予想される出力と一致していれば合格となります。
テスト入力:

 
 
  1. (86)-17712576838,86 14295083635,(+86)
  2. 13722348123,17587918887,-15493106739,.13786842977,86-
  3. 15542304386,+86.15642387356,17345352790
 
 
  1. """
  2. (86)-17712576838
  3. 86 14295083635
  4. (+86) 13722348123
  5. 17587918887
  6. -15493106739
  7. .13786842977
  8. 86-15542304386
  9. +86.15642387356
  10. 17345352790"""

上記の形式のデータを使用してタスクを完了します。
期待される出力:

 
 
  1. ['17712576838', '14295083635', '13722348123', '17587918887',
  2. '15493106739', '13786842977', '15542304386', '15642387356',
  3. '17345352790']

実装コード:

輸入再

def re_group(input_data):

    結果=[]

    #*********** 始める **********#

    result = re.findall(r'\(?\+?8?6?\)?[ .-]?([\d]{11})',input_data)

    #*********** 終わり **********#

    結果を返す

コードのスクリーンショット:

操作結果:

 

 

おすすめ

転載: blog.csdn.net/qq_57409899/article/details/124111102