第二篇:正则表达式

Posted 爬行的龟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二篇:正则表达式相关的知识,希望对你有一定的参考价值。

爬虫需要用到正则,python内置了正则re模块

 

#!/usr/bin/env python3.5
# _*_coding:utf-8 _*_

import re

#要匹配对象
line = "This is a beautiful woman"
#匹配模式,^表示行首,
regex_str1 = "^T.*n$"
regex_str2 = "^t"

if re.match(regex_str1,line):
    print("以T开头,以n结尾")

if re.match(regex_str2,line):
    print("以t开头")

关于贪婪匹配和懒惰匹配:正则默认匹配模式是贪婪匹配模式:

line = "AOOOOAOOOABAlfsdf"
regex_str = ".*(A.*A).*"
match_obj = re.match(regex_str,line)
print(match_obj.group(1))

result:
ABA

上面的例子,这种属于贪婪匹配,下面引入? 符号就能看出效果了,?属于懒惰匹配:

 

line = "AOOOOAOOOABAlfsdf"
regex_str = "A.*?A"
match_obj = re.match(regex_str,line)
print(match_obj.group())

result:
AOOOOA

没加?的情况:

line = "AOOOOAOOOABAlfsdf"
regex_str = "A.*A"
match_obj = re.match(regex_str,line)
print(match_obj.group())

result:
AOOOOAOOOABA

+前面的字符至少出现一次,下面的子字符串‘AA’就不符合要求了:

line = "AOOOOAOOOABAlfAAsdf"
regex_str = ".*(A.+A)"
match_obj = re.match(regex_str,line)
print(match_obj.group(1))

result:
AlfAA

大括号,限定次数:

{m}匹配前一个字符m次,{m,n}匹配前一个字符m到n次,省略n则匹配m至无限次,省略m则匹配0至n次

中括号,指定字符:

[abc] 匹配abc中的一个,[^a]  匹配除了a以外的一个字符,[0-9] 匹配0到9中的一个

\s 匹配空白字符  \S 匹配非空白字符 

\w 匹配单词字符  \W 匹配非单词字符

[\u4E00-\u9FA5] 匹配汉字:

line = "abcad大家下午好"
regex_str = ".*?([\u4E00-\u9FA5].*)"
match_obj = re.match(regex_str,line)
print(match_obj.group(1))

result:
大家下午好

\d 匹配数字

 

以上是关于第二篇:正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

第二十二篇 正在表达式 re模块

linux-ubuntu学习-第二篇

kotlin学习三:初步认识kotlin(第二篇)

原生JavaScript第二篇

通过 Java 正则表达式提取 semver 版本字符串的片段

JDK11 | 第二篇 : JShell 工具