今天小编给大家分享一下Python正则入门知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、单字符匹配

1、匹配某个字符串:

text="abcdef"

ret=re.match('a',text)

print(ret.group())

2、点(.):匹配任意的字符(除了'\n'):

text="\nabcdef"

ret=re.match('.',text)

print(ret.group())

3、\d:匹配任意的数字:

text="abcdef"

ret=re.match('\d',text)

print(ret.group())

4、\D:匹配任意的非数字:

text = "cabedf"

ret = re.match('\D',text)

print(ret.group())

5、\s:匹配的是空白字符(包括:\n,\t,\r和空格):

text = "\nabdef"

ret = re.match('\s',text)

print("*"*30)

print(ret.group())

print("*"*30)

6、\S:非空白字符:

text="ababdef"

ret=re.match('\S',text)

print("*"*30)

print(ret.group())

print("*"*30)

7、\w:匹配的是a-z和A-Z以及数字和下划线:

text="1bc"

ret=re.match('\w',text)

print("*"*30)

print(ret.group())

print("*"*30)

8、\W:匹配的是和\w相反的:

text="+bc"

ret=re.match('\W',text)

print("*"*30)

print(ret.group())

print("*"*30)

9、[] 组合的方式,只要满足中括号中的某一项都算匹配成功:

text = "cba"

ret = re.match('[1c]',text)

print("*"*30)

print(ret.group())

print("*"*30)

10、使用组合的方式 [0-9] \d:

text = "abc"

ret = re.match('[^0-9]',text) # ^符号表示非

print("="*30)

print(ret.group())

print("="*30)

11、使用组合的方式实现 \w:

text = "+bc"

ret = re.match('[^a-zA-Z0-9_]',text)

print("="*30)

print(ret.group())

print("="*30)

二、多字符匹配

1、*:匹配 0 个或者多个字符:

text="-cba"

result=re.match('\D*',text)

print(result.group())

2、+:匹配 1 个或者多个字符:

text="1cba"

result=re.match('\w+',text)

print(result.group())

3、?:匹配前一个字符 0 个或者 1 个:

text = "-cba"

result = re.match('\w?',text)

print(result.group())

4、{m}:匹配 m 个字符:

text="+1cba"

result=re.match('\w{2}',text)

print(result.group())

5、{m,n}:匹配 m-n 之间的个数的字符:

text="1cba+"

result=re.match('\w{1,3}',text)

print(result.group())

三、正则表达式案例

1、验证手机号码:手机号码的规则是以 1 为开头,第二位可以是 34587,后面那 9 位可为任意数字。

text="17751632549"

result=re.match("1[34587]\d{9}",text)

print(result.group())

2、验证邮箱:邮箱的规则是邮箱名称是用数字、英文字符、下划线组成的,然后是 @ 符号,接着为域名。

text="w3cschool@163.com"

result=re.match("\w+@[a-z0-9]+\.[a-z]+",text)

print(result.group())

3、验证 URL:URL 的规则是前面是 http 或者 https 或者是 ftp 然后再加上一个冒号,再加上两个斜杠,再后面就是可以出现任意非空白字符了。

text="https://www.yisu.com/minicourse/play/quick_scrapy"

result=re.match("(http|https|ftp)://\S+",text)

print(result.group())

4、验证身份证:身份证的规则是,总共有 18 位,前面 17 位都是数字,后面一位可以是数字,也可以是小写的 x,也可以是大写的 X。

text="35215669985213654x"

result=re.match("\d{17}[\dxX]",text)

print(result.group())

四、开始/结束/贪婪和非贪婪

1、^:以...开头:

text="helloworld"

result=re.search("^world",text)

print(result.group())

2、$:以...结尾:

text="helloworld"

result=re.search("hello$",text)

print(result.group())

text=""

result=re.search("^$",text)

print(result.group())

3、|:匹配多个字符串或者表达式:

text="https://www.yisu.com/minicourse/play/quick_scrapy"

result=re.match("(http|https|ftp)://\S+",text)

print(result.group())

4、贪婪和非贪婪:

text="12345"

result=re.search("\d+?",text)

print(result.group())

案例 1:提取 html 标签名称:

text="<h2>这是一级标题</h2>"

result=re.search("<.+?>",text)

print(result.group())

案例 2:验证一个字符是不是 0-100 之间的数字:

text="100"

result=re.match("0$|[1-9]\d?$|100$",text)

print(result.group())

四、转义字符和原生字符串

1、Python 中的转义字符:

text=r"hello\nw3cschool"

print(text)

2、正则表达式中的转义字符:

text="applepriceis$9.9,rangepriceis$8.8"

result=re.findall("\$\d+",text)

print(result)

3、原生字符串和正则表达式:

正则表达式的字符串解析规则:

先把这个字符串放在 Python 语言层面进行解析。

把 Python 语言层面解析的结果再放到正则表达式层间进行解析。

text="\cbac"

result=re.match("\\\\c",text)#\\\\c=(Python语言层面)>\\c=(正则表达式层面)>\c

result=re.match(r"\\c",text)#\\c=(正则表达式层面)>\c

print(result.group())

五、分组

text="applepriceis$9.9,orangepriceis$8.8"

result=re.search('.+(\$\d+).+(\$\d+)',text)

print(result.groups())

group()/group(0):匹配整个分组

group(1):匹配第一个分组

group(2):匹配第二个分组

groups():获取所有的分组

六、re 中常用的函数

1、findall:查找所有满足条件的

text="applepriceis$9.9,orangepriceis$8.8"

result=re.findall(r'\$\d+',text)

print(result)

2、sub:根据规则替换其他字符串

text="nihaozhongguo,hellow3cschool"

new_text=text.replace("","\n")

new_text=re.sub(r'|,','\n',text)

print(new_text)

html="""

<divclass="job-detail">

<p>1.3年以上相关开发经验,全日制统招本科以上学历</p>

<p>2.精通一门或多门开发语言(Python,C,Java等),其中至少有一门有3年以上使用经验</p>

<p>3.熟练使用ES/mysql/mongodb/redis等数据库;</p>

<p>4.熟练使用django、tornado等web框架,具备独立开发Python/Java后端开发经验;</p>

<p>5.熟悉Linux/Unix操作系统</p>

<p>6.熟悉TCP/IP,http等网络协议</p>

<p>福利:</p>

<p>1、入职购买六险一金(一档医疗+公司全额购买商业险)+开门红+全额年终奖(1年13薪,一般会比一个月高)</p>

<p>2、入职满一年有2次调薪调级机会</p>

<p>3、项目稳定、团队稳定性高,团队氛围非常好(汇合员工占招行总员工比例接近50%);</p>

<p>4、有机会转为招商银行内部员工;</p>

<p>5、团队每月有自己的活动经费,法定节假日放假安排;</p>

<p>6、办公环境优良,加班有加班费(全额工资为计算基数,加班不超过晚上10点,平日加班为时薪1.5倍,周末加班为日薪2倍,周末加班也可优先选择调休,管理人性化)。</p>

</div>

"""

new_html=re.sub(r'<.+?>',"",html)

print(new_html)

3、split:根据规则分割字符串

text="nihaozhongguo,helloworld"

result=re.split(r'|,',text)

print(result)

4、compile:编译正则表达式

text="applepriceis34.56"

r=re.compile(r"""

\d+#整数部分

\.?#小数点

\d*#小数部分

""",re.VERBOSE)

result=re.search(r,text)

result=re.search(r"""

\d+#整数部分

\.?#小数点

\d*#小数部分

""",text,re.VERBOSE)

print(result.group())

如果想要在正则表达式中加注释,那么需要在正则表达式的函数最后加一个`re.VERBOSE`。

以上就是“Python正则入门知识点有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。