在字符串中查找我们需要的字符,比如从网络爬取的数据看来,我们都需要正则表达式的帮助。
不同的语言具有不同的使用正则表达式方法,python是通过re来实现的。
re.serach()
re.search(r’re_compile‘,strings)
For instance
import re
re.search(r'lk12','I love lk12')
Out[54]: <_sre.SRE_Match at 0xb5c5648>
Search method used for the first location the string we wanted exists.If not exists,it will return None,else it will start from index 0.
\
The ‘’ is used to remove the special function which some signal has such as ‘.’ and so on.
For instance as follows:
import re
re.search(r'.','lk.psr')
<_sre.SRE_Match at 0xb5c5a58>
re.search(r'\.','lk.psr')
<_sre.SRE_Match at 0xb5c5d98>
[ ] -
用于匹配中括号中的任意一个字符,常搭配-一起使用
例如
import re
re.search(r'[0-4][5-9][2-6]','123456')
re.serach(r'[a-z]','as123')
* ? + {}
用于重复匹配
import re
re.search(r'[0-4]+[5-9][2-6]','123456')
import re
re.search(r'ab{3}c','abbbc')
re.search(r'ab{3,5}c','abbbbc')
re.match()
使用语法
re.match(pattern, string, flags=0)
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
import re
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"
常用集锦
正则表达式修饰符 - 可选标志 | |
---|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
更多详情可以参考
python re