pythonで正規表現を使用したグループマッチングが成功したかどうかを自己参照
3681 ワード
前に名前やグループ番号で自分の正規表現のグループ内容を引用することを学び,前後関連式の等しい判断を実現できる.さらに、例えば、現在のキルトマッチングに成功した後、ifに相当する別のモードを選択して識別するモードを選択し、マッチングに成功しない場合、if...else...文の選択.この新しい文法を学びましょう:(?(id)yes-expression|no-expression).ここでidはグループ名またはグループ番号を表し、yes-expressionはグループマッチングに成功した後に選択された正規表現であり、no-expressionは不マッチングに成功した後に選択された正規表現である.次の例を示します.
結果は次のように出力されます.
Candidate: Cai junsheng
Match name : Cai junsheng
Match email: [email protected]
Candidate: No Brackets [email protected]
No match
Candidate: Open Bracket No match
Candidate: Close Bracket [email protected]>
No match
Candidate: [email protected]
Match name : None
Match email: [email protected]
ここで、nameグループが現れるとカッコ<>が検索され、カッコがペアにならないと一致しません.nameグループが表示されない場合はカッコは必要ありませんので、別の正規表現を選択します.
深入浅出Numpyhttp://edu.csdn.net/course/detail/6149
Pythonゲーム開発入門
http://edu.csdn.net/course/detail/5690
Cコンパイラの修正もできます
http://edu.csdn.net/course/detail/5582
カードゲーム開発
http://edu.csdn.net/course/detail/5538
五子棋ゲーム開発
http://edu.csdn.net/course/detail/5487RPGゲームは入門から精通までhttp://edu.csdn.net/course/detail/5246WiXインストールツールの使用http://edu.csdn.net/course/detail/5207ロシアキューブゲーム開発http://edu.csdn.net/course/detail/5110boostライブラリ入門ベースhttp://edu.csdn.net/course/detail/5029Arduino入門の基礎http://edu.csdn.net/course/detail/4931Unity5.xゲームの基本http://edu.csdn.net/course/detail/4810TensorFlowAPI攻略http://edu.csdn.net/course/detail/4495TensorFlow基本チュートリアルの開始http://edu.csdn.net/course/detail/4369C++標準テンプレートライブラリ入門から精通までhttp://edu.csdn.net/course/detail/3324老菜鳥とC++を習うhttp://edu.csdn.net/course/detail/2901老菜鳥に学ぶpythonhttp://edu.csdn.net/course/detail/2592VC 2015でtinyxmlライブラリの使用を学ぶhttp://edu.csdn.net/course/detail/2590WindowsでのSVNのバージョン管理と実戦http://edu.csdn.net/course/detail/2579VisualStudio 2015開発C++プログラムの基本使用http://edu.csdn.net/course/detail/2570VC 2015でprotobufプロトコルを使用http://edu.csdn.net/course/detail/2582VC 2015でMySQLデータベースの使用を学ぶhttp://edu.csdn.net/course/detail/2672
#python 3.6
#
#http://blog.csdn.net/caimouse/article/details/51749579
#
import re
address = re.compile(
'''
^
# A name is made up of letters, and may include "."
# for title abbreviations and middle initials.
(?P
([\w.]+\s+)*[\w.]+
)?
\s*
# Email addresses are wrapped in angle brackets, but
# only if a name is found.
(?(name)
# remainder wrapped in angle brackets because
# there is a name
(?P(?=(<.>$)))
|
# remainder does not include angle brackets without name
(?=([^]$))
)
# Look for a bracket only if the look-ahead assertion
# found both of them.
(?(brackets)
[\w\d.+-]+ # username
@
([\w\d.]+\.)+ # domain name prefix
(com|org|edu) # limit the allowed top-level domains
)
# Look for a bracket only if the look-ahead assertion
# found both of them.
(?(brackets)>|\s*)
$
''',
re.VERBOSE)
candidates = [
u'Cai junsheng ',
u'No Brackets [email protected]',
u'Open Bracket ',
u'[email protected]',
]
for candidate in candidates:
print('Candidate:', candidate)
match = address.search(candidate)
if match:
print(' Match name :', match.groupdict()['name'])
print(' Match email:', match.groupdict()['email'])
else:
print(' No match')
結果は次のように出力されます.
Candidate: Cai junsheng
Match name : Cai junsheng
Match email: [email protected]
Candidate: No Brackets [email protected]
No match
Candidate: Open Bracket No match
Candidate: Close Bracket [email protected]>
No match
Candidate: [email protected]
Match name : None
Match email: [email protected]
ここで、nameグループが現れるとカッコ<>が検索され、カッコがペアにならないと一致しません.nameグループが表示されない場合はカッコは必要ありませんので、別の正規表現を選択します.
深入浅出Numpyhttp://edu.csdn.net/course/detail/6149
Pythonゲーム開発入門
http://edu.csdn.net/course/detail/5690
Cコンパイラの修正もできます
http://edu.csdn.net/course/detail/5582
カードゲーム開発
http://edu.csdn.net/course/detail/5538
五子棋ゲーム開発
http://edu.csdn.net/course/detail/5487RPGゲームは入門から精通までhttp://edu.csdn.net/course/detail/5246WiXインストールツールの使用http://edu.csdn.net/course/detail/5207ロシアキューブゲーム開発http://edu.csdn.net/course/detail/5110boostライブラリ入門ベースhttp://edu.csdn.net/course/detail/5029Arduino入門の基礎http://edu.csdn.net/course/detail/4931Unity5.xゲームの基本http://edu.csdn.net/course/detail/4810TensorFlowAPI攻略http://edu.csdn.net/course/detail/4495TensorFlow基本チュートリアルの開始http://edu.csdn.net/course/detail/4369C++標準テンプレートライブラリ入門から精通までhttp://edu.csdn.net/course/detail/3324老菜鳥とC++を習うhttp://edu.csdn.net/course/detail/2901老菜鳥に学ぶpythonhttp://edu.csdn.net/course/detail/2592VC 2015でtinyxmlライブラリの使用を学ぶhttp://edu.csdn.net/course/detail/2590WindowsでのSVNのバージョン管理と実戦http://edu.csdn.net/course/detail/2579VisualStudio 2015開発C++プログラムの基本使用http://edu.csdn.net/course/detail/2570VC 2015でprotobufプロトコルを使用http://edu.csdn.net/course/detail/2582VC 2015でMySQLデータベースの使用を学ぶhttp://edu.csdn.net/course/detail/2672