正则表达式
Posted keepcuriosity
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
regex用于匹配相应的类型,通常用于对于文本中的字符进行匹配和提取,以下只介绍python re模块的常见方法和regex的常见通配符
python re库
1. re.compile(pattern, flags=0)
编译一个正则表达式对象,在利用该对象去调用match()、search()等方法
reg = re.compile(r‘ddd-ddd-dddd‘) //在字符串的第一个引号之前加上 r,可以将该字符串标记为原始字符串,它不包括转义字符
2. re.match(pattern, string)
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
3. re.search(pattern, string, flags=0)
查找传入的整个string,寻找该正则表达式的所有匹配。如果字符串中没有找到该正则表达式模式,search()方法将返回None。如果找到了该模式, search()方法将返回一个Match对像
4. re.findall(pattern, string, flags=0)
将返回一组字符串,包含被查找字符串中的所有匹配
5. 匹配分组
- (...)分组匹配括号内的正则表达式,执行匹配后可使用group()检索匹配内容
- (){}花括号中为匹配()中分组的个数,为数字
match对象调用group()方法,group(0)返回所有匹配的分组,groups()返回包含匹配的所有子组的元组
eg:
>>> import re
>>> reg = re.compile(r"(ddd)+(dddd)")
>>> match = reg.search("this is 345+7890")
>>> match.group(0)
‘345+7890‘
>>> match.group(1)
‘345‘
>>> match.group(2)
‘7890‘
>>> match.groups()
(‘345‘, ‘7890‘)
>>> type(match)
<class ‘_sre.SRE_Match‘>
6.常见的pattern中匹配的通配字符的含义
(注:若想让通配符表示其原有的含义,需使用 转义)
- * 星号之前的分组,可以在文本中出现任意次。它可以完全不存在,或一次又一次地重复
- ? 匹配问号之前的分组零次或一次
- +(加号)匹配一次或多次
- d 0 到 9 的任何数字
- D 除 0 到 9 的数字以外的任何字符
- w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
- W 除字母、数字和下划线以外的任何字符 s 空格、制表符或换行符(可以认为是匹配“空白”字符)
- S 除空格、制表符和换行符以外的任何字符
总结:
- 1.导入re
- 2.使用re.compile()创建一个regex对象
- 3.使用regex对象相关方法去匹配string,返回一个match对象
- 4.调用match对象的方法,返回匹配文本的字符串
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性