#!/usr/bin/python import re str = raw_input("String containing email...\t") match = re.search(r'[\w.-][email protected][\w.-]+', str) if match: print match.group()
これは最も複雑なコードではありません。可能であれば、すべての一致を得る方法を探しています。Pythonと正規表現
#!/usr/bin/python import re str = raw_input("String containing email...\t") match = re.search(r'[\w.-][email protected][\w.-]+', str) if match: print match.group()
これは最も複雑なコードではありません。可能であれば、すべての一致を得る方法を探しています。Pythonと正規表現
あなたがre.findall()
をしたいように聞こえる:
findall(pattern, string, flags=0)
Return a list of all non-overlapping matches in the string.
If one or more groups are present in the pattern, return a
list of groups; this will be a list of tuples if the pattern
has more than one group.
Empty matches are included in the result.
限りの電子メールアドレスを識別するための実際の正規表現が行くように... this questionを参照してください。
また、変数名にはstr
を使用してください。これにより、str
ビルトインが非表示になります。
+1変数名を識別するstr – Rozuur
あなたが探しているのはre.findallだと思います。
あなたはありません)(()()またはfindAllのに()
のfindAllを見つけるための試みを与える パターンのすべての出現、 検索などだけではなく、最初のものと一致する必要があります。例えば、もし一つは、彼または彼女は可能性があります 使用のfindAll()
strなどの組み込み関数をオーバーライドしないでください。意味のある名前を使用し、文字列全体の値を割り当てます。
また、文字列を一致させるRegexオブジェクトを持つパターンをコンパイルするには、何度も良いアイデアです。
を(コードに示されている)私はそれ以外の場合、このスニペットは有用であるべき完全な正規表現が正確RFC822 could be a pagefulに従って電子メールIDと一致することに気づきました。
import re
inputstr = "[email protected], [email protected], [email protected], etc etc\t"
mailsrch = re.compile(r'[\w\-][\w\-\.][email protected][\w\-][\w\-\.]+[a-zA-Z]{1,4}')
matches = mailsrch.findall(inputstr)
print matches
これは素晴らしいです - ありがとう! – tekknolagi
私は、Pythonを知らないが、perlですべての一致を得るために修飾子はので、多分R '[\ wの.-] + @ [\ wの.-] +' gが働くだろう、gです。 –
私はあなたがすでにこれを認識していると確信していますが、その場合、正規表現はいくつかの有効な電子メールアドレスを逃して無効なアドレスを見つけるでしょう。 –
どうすれば修正できますか?@マーク – tekknolagi