Python 中的正则表达式
在 Python专门术语中,有两种主要方法完成模式匹配:搜索(searching)和匹配(matching)。搜索即在字符串任意部分中查找匹配的模式,而匹配是指,判断一个字符串能否从起始处全部或部分的匹配某个模式。搜索通过 search() 函数或方法来实现,而匹配是以调用 match() 函数或方法实现的。
元字符(metacharacters)——特殊字符和符号
记号 | 说明 | 例子 |
literal | 匹配字符串的值 | foo |
re1|re2 | 匹配re1或re2 | boo|bar |
. | 匹配任何字符(换行符除外) b.b | |
^ | 匹配字符串的开始 | ^Dear |
$ | 匹配字符串的结尾 | /bin/*sh$ |
* | 匹配前面的正则式零或多次 | [A-Za-Z0-9]* |
+ | 匹配前面的正则式一次或多次 | [a-z]+\.com |
? | 匹配前面的正则式零次或多次 | goo? |
{N} | 匹配前面的正则式N次 | [0-9]{3} |
{M, N} | 匹配出现M次到N次的正则式 | ·0-9[{5-9} |
[...] | 匹配出现的任意一个字符 | [aeiou] |
[...a-z..] | 匹配出现在a到z的一个字符 | [A-Za-z] |
[^...] | 不匹配出现的任何一个字符 | [^aeiou] |
(...) | 匹配括号中RE,并保存为子组 | ([0-9){3}) |
\d | 匹配任何数字(\D反意) | data\d.txtd |
\w | 匹配任何数字字母字符(\W反意) | |
\s | 匹配任何空白符(\S反意) | |
\b | 匹配单词边界(\B反意) | \bThe\b |
\c | 逐一匹配特殊字符 | |
\A (\Z) | 匹配字符串的起始(结束) |
问号有两种含义
- 单独使用时表示匹配出现零次或一次的情况
- 紧跟在表示重复的元字符后面时,表示要求搜索引擎匹配的字符串越短越好。例如 (+?)
例子
正则表达式模式 匹配的字符串 \w+-\d+ 一个由字母或数字组成的字符串,和至少一个数字,两部分中间由连字符连接 [A-Za-z]\w* 第一个字符是字母,其余字符(如果存在的话),是字母或数字(它几乎等价于 Python 语言中合法的标识符 \d{3}-\d{3}-\d{4} (美国)电话号码,前面带区号前缀,例如 800-555-1212 \w+@\w+.com 简单的 XXX@YYY.com 格式的电子邮件地址 \d+(.\d*)? 表示简单的浮点数 Mr?s?. )?[A-Z][a-z]* [ A-Za-z-]+ 名字和姓氏,对名字的限制(首字母大写,其它字母(如果存在)小写),全名前有可选的称谓(“Mr.,”“Mrs.,” “Ms.,” 或 “M.,”),姓氏没有什么限制,允许有多个单词、横线、大写字母。
一对圆括号(()) 和正则表达式一起使用时可以实现以下任意一个(或两个)功能: * 对正则表达式进行分组 * 匹配子组
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论