悠悠楠杉
揭秘正则表达式:从基础到进阶的深度解析
06/12
1. 正则表达式基础入门
正则表达式由一系列字符组成,用于定义字符串的搜索或匹配模式。它主要由三种元素构成:字符类、量词和分组。
- 字符类:如
a-z
表示任意小写字母,.
表示任意单个字符(除了换行符)。 - 量词:如
*
表示零次或多次,+
表示一次或多次,?
表示零次或一次。 - 分组:通过圆括号
()
将多个字符作为一个整体处理,用于后向引用等复杂操作。
2. 基础语法示例与实战
示例1:简单匹配
regex
\d+ # 匹配一个或多个数字
实战:检查字符串中是否包含至少一个数字
python
import re
text = "Here are some numbers: 123 and 456."
if re.search(r"\d+", text):
print("Found at least one digit in the text.")
示例2:邮箱匹配
regex
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,} # 匹配常见的电子邮件地址格式
实战:验证用户输入的邮箱格式是否正确
python
email = "user@example.com"
if re.match(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}", email):
print("Valid email.")
else:
print("Invalid email.")
3. 高级技巧与特性
3.1 反向预查(Negative Lookahead)与正向预查(Positive Lookahead)
反向预查用于确保某模式不出现于某位置之前,而正向预查则确保某模式出现于某位置之前。regex # 匹配不包含'www'的URLs
(?!www\.) # 断言后面不跟"www."的任何字符的开头位置为负向前瞻的开始点。 例子:https://example.org/page 但不匹配 https://www.example.com/page