import re def find_birthdays(text): pattern1 = r"\d{2}[-/]\d{2}[-/]\d{4}" pattern2 = r"\d{2}\.\d{2}\.\d{4}" pattern3 = r"\d{8}" matches = re.findall(pattern1, text) + re.findall(pattern2, text) + re.findall(pattern3, text) return matches text = "我的生日是2003/04/26。" birthdays = find_birthdays(text) print(birthdays)
时间: 2024-03-26 07:36:24 浏览: 61
这段代码没有明显的错误,但可以进行一些改进:
1. 函数名可以更加准确明确,比如可以将函数名修改为`extract_birthdays`。
2. 函数中的三个正则表达式可以提前编译,以提高匹配效率,比如可以编译成这样:
```
pattern1 = re.compile(r"\d{2}[-/]\d{2}[-/]\d{4}")
pattern2 = re.compile(r"\d{2}\.\d{2}\.\d{4}")
pattern3 = re.compile(r"\d{8}")
```
然后在函数中使用编译后的正则表达式进行匹配。
3. 函数中的三个正则表达式可以进行合并,以简化代码,比如可以这样写:
```
pattern = re.compile(r"\d{2}([-/.])\d{2}\1\d{4}|\d{8}")
matches = pattern.findall(text)
```
上面的正则表达式中,`\1`表示与第一个圆括号匹配的内容,也就是匹配到的分隔符,然后用`\1`来代替分隔符,以确保分隔符的一致性。
相关问题
帮我修改一下下列代码import re def find_birthdays(value): # 生日模式: MM/DD/YYYY 或 MM-DD-YYYY if pattern = r"\d{4}[-/]\d{2}[-/]\d{2}": matches = re.findall(pattern, text) return matches elif pattern = r"\d{4}\.\d{2}\.\d{2}": matches = re.findall(pattern, text) return matches elif pattern = r"\d{8}": matches = re.findall(pattern, text) return matches # 测试 text = "我的生日是2003.04.26。" birthdays = find_birthdays(text) print(birthdays)
import re
def find_birthdays(text):
# 生日模式: MM/DD/YYYY 或 MM-DD-YYYY
pattern1 = r"\d{2}[-/]\d{2}[-/]\d{4}"
pattern2 = r"\d{2}\.\d{2}\.\d{4}"
pattern3 = r"\d{8}"
matches = re.findall(pattern1, text) + re.findall(pattern2, text) + re.findall(pattern3, text)
return matches
# 测试
text = "我的生日是2003.04.26。"
birthdays = find_birthdays(text)
print(birthdays)
阅读全文