正则表达式
Regular Expressions,或叫做regex/regexp,是一种简洁灵活的匹配文本字符串的方法,是匹配与分析string 的wild card(万能牌)。
The Regular Expressions Module
使用regex前要先引用该模块:import re
re.search() 判断字符串是否匹配正则表达式,类似于string method中的find()
re.search()相比find()遍历每一行去查找,它可以多行多线程同时遍历寻找目标
^ 代表每一行以什么开头。如re.search(’ ^From: ', line),表示在line里寻找以From:为句首的字符串
re.findall()提取string中匹配正则表达式中的部分,类似于find()和slicing[ : ]的结合
Wild-Card Characters
Wild-Card Characters 总结:
^ start of the line
. any character
* many times
\S any none-whitespace character
+ one or more times
[0-9]+ one or more digits
[AEIOU]+ one or more uppercase letters
.+? one or more characters but not geedy
() where to start and stop what string to extract # ()前需要有空一格
[^ ] none blank character
[0-9.] a digit or period
“ ^X.*: ”表示以X开头,以:结尾,中间随便是什么的文本,其中X和:可以视为lock character
Maching and Extracting Data
re.findall()是指找到并提取
[0-9]+ 指含有至少一个数字
[AEIOU]+ 指至少含有一个大写字母
如果有多个string都可以被提取出来,根据greedy的原则,会提取最长的那个match
添加?可以变成non-greedy,输出最短的match
\S+@\S+表示@两边所有的字符,用空格作为截断
()表示提取的起始点,注意括号前要空一格
String Parsing Example
- find()和slicing
- double split
- regex
@( [^ ] ) 表示在字符串中搜寻到第一个@,从这开始寻找每一个非空字符,截断到空字符为止
更精准的表达
例子
Escape Character
转义字符