CS50-Regular Expressions
CS50’s Introduction to Programming with Python Lecture 7
Regular Expressions
正则表达式是一种模式,使用模式来匹配某种数据(通常是用户输入)是很常见的
python
中有一个正则表达式库re
- 在
re
库中有很多函数来定义、检查甚至替换模式 re.search(pattern, string, flags=0)
- 可选flags
re.IGNORECASE
忽略用户输入的大小写re.MULTILINE
处理多行re.DOTAIL
- 可选flags
re.match(pattern, string, flags=0)
- 自动从字符串的开头开始匹配
re.fullmatch(pattern, string, flags=0)
- 既匹配字符串的开头,也匹配字符串的结尾
re.sub(pattern, repl, string, count=0, flags=0)
- 替换指定模式的子句,并将结果返回
re.split(pattern, string, maxsplit=0, flags=0)
- 分割字符串,
re.findall(pattern, string, flags=0)
- 在
正则表达式的符号
.
表示除换行符外的任何单个字符*
表示0个或多个重复+
表示1个或多个重复?
表示0个或1个重复{m}
表示m个重复{m,n}
表示m-n个重复\
转义字符- 字符串前加
r
表示以原始形式传入,对所有正则表达式使用原始字符串是一个好习惯 ^
表示该模式匹配字符串的开头$
表示想要匹配字符串的末尾或字符串结尾的新行之前[]
表示字符集,可使用连字符,里面没有空格[^]
集合的补(即表示不能匹配该集合中的任一字符)A|B
表示A或B(...)
表示一个group,将模式组合起来,还可以捕获他们,括号中的内容将作为函数返回值返回,将允许从用户自己的输入中提取特定量的信息(?:...)
非捕获版本
正则表达式自带了一些附加模式
\w
表示单词字符,字母数字符号或下划线\W
前一个的补集\d
表示十进制数字\D
前一个的补集\s
表示空白字符\S
前一个的补集
用于验证用户的电子邮件地址
1
2
3
4
5
6
7
8import re
email = input("What's your email? ").strip()
if re.search(r"^(\w|\.)+@(\w+\.)+(com|edu|gov|net|org)&", email, re.IGNORECASE):
print("Valid")
else:
print("Invalid")使用渐进式的方式编写正则表达式,step by step
- 标题: CS50-Regular Expressions
- 作者: 敖炜
- 创建于 : 2023-07-21 15:08:50
- 更新于 : 2024-04-19 09:31:08
- 链接: https://ao-wei.github.io/2023/07/21/CS50-Regular-Expressions/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论