Python正则表达式函数实例和常见符号的使用

algorain

今天要说的是正则表达式!!!

正则表达式,顾名思义是对表达式的一种筛选,处理,判断。当然我也只是一知半解,偶尔在爬虫里会用一些,但都是很简单的表达式,所以今天浅谈一下python中re模块

先说理论的,re库里包含了正则表达式的处理函数

  1. re.match(pattem,string,flags) re.match是从字符串的开始去匹配一个正则表达式模式,函数有三个参数,第一个是要匹配的正则表达式 第二个是要匹配的字符串文本 第三个是控制正则表达式的匹配方式

  2. re.search(pattem,string,flags) re.search会在字符串中查找到第一个匹配模式然后返回参数与re.match相同

  3. re.sub(pattern,repl,string,count) re.sub用于替换字符串中的匹配项,pattern是要匹配的正则表达式, repl是要替换的字符串,string表示字符串文本count表示要替换的个数,可不写,默认全部替换re.split(pattern,string)

  4. re.findall(pattern,string)(我最常用) 按照匹配模式分割字符串为一个列表获取所有匹配的字符串

  5. re.compile() 可以把正则表达式编译成一个正则表达式对象

1
2
3
4
5
import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
regex = re.compile(r'\woo\w')
print regex.findall(text)   #查找所有包含'oo'的单词
print regex.sub(lambda m: '[' + m.group(0) + ']', text) #将字符串中含有'oo'的单词用[]括起来。

下面说一说正则表达式中几个常用符号

1. 使用‘ . ’符号

1
2
3
4
5
6
使用几个‘ . ’则往后匹配几个字符
import re
code = 'abcahf123afr'
b = re.findall('a..',code)
print b
>>>['abc', 'ahf', 'afr']

2. 使用‘ .* ’ 和 ‘ .*? ’贪婪模式与非贪婪模式

1
2
3
4
5
6
7
8
import re
code = 'abcahf123afr'
b = re.findall('a.*a',code)
print b
>>>['abcahf123a'] #贪婪模式匹配开始和结束字符中间内容时,内容越多越好,直到匹配到最后一个相同的字符。
b = re.findall('a.*?a',code)
print b
>>>['abca'] #非贪婪模式匹配开始和结束字符中间内容时,内容越少越好,一旦匹配到相同的字符就会结束。

3. 括号的使用可以提取想要的内容

1
2
3
4
5
6
7
8
import re
code = 'abcahf123afr'
b = re.findall('a(.*a)',code)
print b
b = re.findall('a(.*?)a',code)
print b
>>>['bcahf123a']
>>>['bc']
  • Title: Python正则表达式函数实例和常见符号的使用
  • Author: algorain
  • Created at: 2017-02-07 23:14:47
  • Updated at: 2023-05-14 21:39:50
  • Link: http://www.rain1024.com/2017/02/07/python-article35/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments