我有一些棘手的正则表达式匹配我在Python中使用 re 包。
案例1:
包含名称&的条目列表年龄喜欢
John (45)
Mike (37)
我想要搜索的模式是Name(某个数字),并使用匹配的名称集复制所有这些行。如果我使用像......
这样的语法found = re.search(r"(Name1|Name2|Name3) (\d+)", line)
if found: valid_line.append(line)
有一些问题。这需要哪些更正?
答案 0 :(得分:0)
使用re.search
<强>实施例强>
import re
s = """John (45)
Mike (37)"""
for line in s.split("\n"):
if re.search("\w+\s+\(\d+\)", line):
print(line )
或者:
for line in s.split("\n"):
if re.search("(John|Mike)\s+\(\d+\)", line):
print(line )
<强>输出:强>
John (45)
Mike (37)
\(\)
答案 1 :(得分:0)
我认为获得名字和年龄对你来说是一个奖励。我不是很擅长正则表达式,所以我确信这是一种更简洁的方法。
([a-zA-Z]+)\s+\(([^)]\d)\)
import re
line = "John (45) Mike (37) John (45) Mike (37)"
exp = r"([a-zA-Z]+)\s+\(([^)]\d)\)"
for (name, age) in re.findall( exp, line ):
print(name, "is", age, "years old.")
John is 45 years old.
Mike is 37 years old.
John is 45 years old.
Mike is 37 years old.