我的目标是从我的reular表达式匹配的文本文件中逐行打印匹配项。我的文件regexprc.txt中写有各种东西,但是我想编写一个简单的程序,它只匹配该文件中的名称并逐行打印它们。
规则是:具有可选中间名的名字和姓氏的行都用一个空格分隔,任何第一个字母必须大写,并且任何字母字符串都可以作为名称使用。所以它应该匹配John Smith,John Lee Smith,A B,A B C,Abc Def Z.它不应该与John Smith,Z,Ab Cd EE,A B C D相匹配。
不幸的是,我需要一些帮助,因为我是Python 3的新手。这是我到目前为止所尝试的内容:
import re
file_read = open("regexprc.txt", "r")
#match names
ptr = '^([A-Z][a-z]*\s){1,2}([A-Z][a-z]*)?$'
for line in file_read:
a = re.search(ptr, line)
print(a)
此代码仅打印许多None
语句以及一些看起来像的消息:
<_sre.SRE_Match object; span=(0, 4), match='A B\n'>.
我再次希望它能逐行打印出regexprc.txt
中的名字。
答案 0 :(得分:1)
relative
这将找到每一行中的所有匹配项,并打印出&#34; group 0&#34; (即所有匹配的文本)。(/ p>)
with语句还会为您关闭文件,因此一般情况下使用它是一种很好的做法。