如何解决正则表达式问题从课程中使用python与Coursera上的操作系统进行交互
填写代码以检查所传递的文本是否包含可能的美国邮政编码,其格式如下:正好5位数,有时但并非总是如此,后跟带有4位数的破折号。邮政编码必须至少包含一个空格,并且不能在文本开头。
import re
def check_zip_code (text):
result = re.search(r"___",text)
return result != None
print(check_zip_code("The zip codes for New York are 10001 thru 11104.")) # True
print(check_zip_code("90210 is a TV show")) # False
print(check_zip_code("Their address is: 123 Main Street,Anytown,AZ 85258-0001.")) # True
print(check_zip_code("The Parliament of Canada is at 111 Wellington St,Ottawa,ON K1A0A9.")) # False
用答案代替破折号____
。这是我的"[0-9][0-9][0-9][0-9][0-9].*[0-9][0-9][0-9][0-9]"
该解决方案绝对正确,并且可以正常工作。任何人都可以找到该问题的替代解决方案,因为我不这么认为。如此多次写[0-9]
,可能会有更好的解决方案。
解决方法
def check_zip_code(text):
return re.search(r'\d{5}(?:-\d{4})?',text) != None
我正好使用5位数字({n}
),后跟一个非捕获组((?: ..)
),由于问号,该组是可选的。
这是我的解决办法
r"\d{5}[-\d{4}]"
通常,任何时候您想使用数字的正则表达式都使用数字\d
,与[0-9]相同。放置{n}
意味着恰好发生n次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。