レベル 1: グループ化
ミッションの詳細
このレベルのタスク: グループ化を使用して中国の携帯電話番号の抽出を完了します。
関連情報
グループ
グループ化を実現するのは非常に簡単で、()
それを使用するだけです。正規表現の左側から見ると、最初に表示される左括弧は(
最初のグループ化を示し、2 番目の左括弧は 2 番目のグループ化を示します。
a='<div><a href="https://support.google.com/chrome/?
p=ui_hotword_search" target="_blank">python正则表达式之分组</a>
<p>dfsl</p></div>'
print(re.search(r'<a.*>(.*)</a>',a).group(1))
出力:
python正则表达式之分组
暗黙的なグローバル グループ化 (つまり、
0
インデックス番号 によるグループ化) が存在することに注意してください。これは、正規表現全体を照合した結果です。
名前付きグループ
グループに名前を付けると、デフォルトのグループ番号を持つグループに別のエイリアスが追加されます。これは、将来の参照に便利です。
コマンドグループ化の構文形式は次のとおりです。
(?P<name>正则表达式)
構文形式の文字はP
大文字である必要がありP
、name
有効な識別子であり、グループのエイリアスを表します。例えば:
a = "ip='127.0.0.1',version='1.0.0'"
res = re.search(r"ip='(?P<ip>\d+\.\d+\.\d+\.\d+).*", a)
print(res.group('ip')) #通过命名分组引用分组
出力:
127.0.0.1
プログラミング要件
右側のコードを注意深く読み、メソッドのプロンプトに従ってBegin - End
その領域のコードを補足してください。具体的なタスクは次のとおりです。
11
数字を含む携帯電話番号を抽出し、文字列内の他の記号をフィルターで除外します。
試験指導
コードを補足した後、「評価」をクリックすると、作成したコードがプラットフォームによってテストされ、結果が予想される出力と一致していれば合格となります。
テスト入力:
(86)-17712576838,86 14295083635,(+86)
13722348123,17587918887,-15493106739,.13786842977,86-
15542304386,+86.15642387356,17345352790
"""
(86)-17712576838
86 14295083635
(+86) 13722348123
17587918887
-15493106739
.13786842977
86-15542304386
+86.15642387356
17345352790"""
上記の形式のデータを使用してタスクを完了します。
期待される出力:
['17712576838', '14295083635', '13722348123', '17587918887',
'15493106739', '13786842977', '15542304386', '15642387356',
'17345352790']
実装コード:
輸入再
def re_group(input_data):
結果=[]
#*********** 始める **********#
result = re.findall(r'\(?\+?8?6?\)?[ .-]?([\d]{11})',input_data)
#*********** 終わり **********#
結果を返す
コードのスクリーンショット:
操作結果: