马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
正则表达式(Regular Expression, 简称 RegEx)
正则表达式是一种用来形貌字符串模式的工具,它答应你根据特定的规则来搜索、匹配、替换字符串。正则表达式通过一些特殊的符号和规则来形貌字符串的匹配模式,常用于文本搜索、替换、验证和提取。
Python 提供了 re 模块来支持正则表达式的利用,答应用户举行模式匹配、搜索、替换等操作。
正则表达式的基本组成部分
正则表达式包罗以下几类常见元素:
1. 元字符(Metacharacters)
元字符是正则表达式中具有特殊含义的字符,它们通常用于定义模式匹配的规则。
- .:匹配除换行符以外的任何字符。
- ^:匹配字符串的开始。
- $:匹配字符串的结束。
- *:匹配前面的元素零次或多次。
- +:匹配前面的元素一次或多次。
- ?:匹配前面的元素零次或一次。
- {n}:匹配前面的元素恰好 n 次。
- {n,}:匹配前面的元素至少 n 次。
- {n,m}:匹配前面的元素至少 n 次,但不超过 m 次。
- []:匹配方括号中的字符会合的任何一个字符(字符集)。
- |:表示"或"的意思,匹配左右任意一个表达式。
- ():用于分组匹配,提取匹配的部分。
2. 常见的字符集(Character Classes)
- \d:匹配任何数字,等价于 [0-9]。
- \D:匹配任何非数字字符,等价于 [^0-9]。
- \w:匹配任何字母数字字符或下划线,等价于 [a-zA-Z0-9_]。
- \W:匹配任何非字母数字字符,等价于 [^a-zA-Z0-9_]。
- \s:匹配任何空白字符(包罗空格、制表符、换行符等)。
- \S:匹配任何非空白字符。
- \b:匹配单词边界。
- \B:匹配非单词边界。
3. 贪婪和非贪婪匹配
- 贪婪匹配(Greedy Match):尽可能多地匹配字符。例如,.* 会尽量匹配尽可能多的字符。
- 非贪婪匹配(Non-Greedy Match):尽可能少地匹配字符。通过在量词后加 ? 来实现。例如,.*? 会尽量匹配少量的字符。
常见的正则表达式例子
以下是一些常见的正则表达式及其用途:
1. 匹配电话号码
假设你要匹配常见格式的电话号码,如 (123) 456-7890,你可以利用如下正则表达式:
- \( 和 \) 匹配括号字符。
- \d{3} 匹配三个数字。
- \s 匹配空白字符(通常是空格)。
- - 匹配连字符。
2. 匹配邮箱地址
匹配简单的邮箱地址,如 user@example.com,可以利用:
- [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
复制代码
- [a-zA-Z0-9._%+-]+ 匹配用户名部分,支持字母、数字、点、下划线、百分号等字符。
- @ 匹配 @ 符号。
- [a-zA-Z0-9.-]+ 匹配域名部分。
- \. 匹配点号。
- [a-zA-Z]{2,} 匹配域名的后缀,至少包罗两个字母。
3. 匹配网址(URL)
匹配网址(如 https://www.example.com)的正则表达式可以是:
- https?://(?:www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}
复制代码
- https? 匹配 “http” 或 “https”,? 表示可选。
- :// 匹配 “
|