2

正規表現を使用して、テキストの文字列からメールアドレスだけを取得しようとしています。

行全体ではなく、電子メールアドレスだけを抽出する簡単なコードを取得するにはどうすればよいですか?

demo_text = """hsds hjdsjd ksdkj

Reason: 550 abc@gmail.com... No such user

sdhjsdjh
"""
# the following code extracts the whole line "Reason: 550 abc@gmail.com... No such user"
# how do I just extract "abc@gmail.com"?
email = re.search("Reason: 550 (.+)... No such user", demo_text).group(0)
4

4 に答える 4

8

.group(0)文字列全体を返します。あなたがしたい.group(1)

email = re.search("Reason: 550 (.*?)... No such user", demo_text).group(1)
于 2012-05-26T02:55:48.577 に答える
2

代わりにグループ 1 を取得します。

....group(1)
于 2012-05-26T02:55:46.017 に答える
-1

より一般的な正規表現ソリューションは次のようになります。

r"[\w.]+@[\w.]+"
于 2012-05-26T02:56:53.843 に答える
-1

使用するだけです:

email_id = re.search(r'([\w.])+@([\w.])+', demo_text)
email_id.group(1) # the username part
email_id.group(2) # the host part
于 2012-05-26T07:21:13.430 に答える