首页 > 其他分享 >正则表达式、re模块

正则表达式、re模块

时间:2023-06-08 20:34:01浏览次数:29  
标签:字符 匹配 正则表达式 res re 模块 print

正则表达式的介绍

定义:


"""
 它是一门独立的语言,跟Python等的语言没有任何的关系,但是其他语言可以使用正则表达式来做一些功能,
主要是用来筛选数据的 。




                                                                                                      """

什么是正则表达式:


 利用一些特殊的符号匹配除想要的数据就是正则表达式,简称'正则'
 在线测试工具: http://tool.chinaz.com/regex/

列子:

^(13|14|15|18)[0-9]{9}$
              形如上述代码的就是正则表达式

字符组

定义:


字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字、字母、标点等等。
         假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。

解析:

[0123456789] # 匹配0-9之间的数字
[0-9]		# 匹配0-9之间的数字
\d			# 匹配0-9之间的数字
[a-z]        # 匹配a-z之间的字符
[A-Z]		# 匹配A-Z之间的字符

列子:

#1.  匹配0-9a-zA-Z如何写
[0123456789ABCDEFGHIJ...abcdefghij...]
[0-9A-Za-z]

字符

. 	匹配除换行符以外的任意字符     # 掌握
\w	匹配字母或数字或下划线		# 掌握
\s	匹配任意的空白符
\d	匹配数字					    # 掌握
\n	匹配一个换行符				# 掌握
\t	匹配一个制表符
\b	匹配一个单词的结尾
^	匹配字符串的开始			    # 掌握
$	匹配字符串的结尾			    # 掌握
\W	匹配非字母或数字或下划线
\D	匹配非数字
\S	匹配非空白符
a|b	匹配字符a或字符b				# 掌握
()	匹配括号内的表达式,也表示一个组	
[...]	匹配字符组中的字符			  # 掌握
[^...]	匹配除了字符组中字符的所有字符	  # 掌握

量词

1. 量词只能影响前面的一个字符
2. 量词不能单独使用,必须配合其他字符串使用
*	重复零次或更多次
+	重复一次或更多次
?	重复零次或一次
{n}	重复n次
{n,}	重复n次或更多次
{n,m}	重复n到m次

贪婪匹配和非贪婪匹配

# 待匹配的字符
<script>123</script>

# 正则表达式是:
<.*>

# 匹配结果是:
<script>
<script>123</script>

# 默认匹配的是贪婪匹配:尽可能的多匹配
'''把贪婪匹配转为非贪婪匹配'''
<.*?> # 非贪婪匹配尽可能的少匹配

.*?组合的用法

小练习

^[1-9]\d{13,16}[0-9x]$
^[1-9]\d{13,16}[0-9x]$
^[1-9]\d{14}(\d{2}[0-9x])?$
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

# 由于正则表达式的复杂性,所以,以后遇到常见的匹配规则,我们可以去百度搜
1. 写一个匹配常见的手机号的正则
^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$

转义字符

'\\\\\\\\n'
\\\\\\\\\\\\\\\\n
'\t'
\\t
'''一个斜杠只能转义一个字符'''


# 在python中转义字符推荐使用:r'\n' '\\n'  =====》 

re模块

定义:

1. re是内置的模块,可以直接使用
2. 在python中,要想使用正则需要借助于re模块
re: regular express

列子:

import re

# re.findall('这是正则表达式', '待匹配的文件')

# res=re.findall('b', 'eva jason kavin')
# print(res)  # ['a', 'a', 'a']
# 如果匹配不到字符,就返回空列表[]

# res=re.search('b', 'eva jason kavin')
# print(res)
# print(res.group())

"""如果匹配不到,就返回None"""
# if res:
#     print(res.group())
# else:
#     print('没有匹配到')
方式二:
# try:
#     print(res.group())
# except Exception:
#     print('没有找到')


res=re.match('a', 'aeva jason kavin')  # 从开头开始匹配
print(res)
print(res.group())

分组

定义:
分组就是用一对园括号“()”括起来的正则表达式,匹配出的内容的就表示一个分组。
从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。
分组完组之后,想要获取某个分组的内容,直接使用group(num)函数去提取就OK了。

分组相关:

无名分组:

有名分组:

标签:字符,匹配,正则表达式,res,re,模块,print
From: https://www.cnblogs.com/huangchunfang/p/17466571.html

相关文章

  • 【Azure 事件中心】Event Hubs如何获取其中存放的历史消息
    问题描述使用AzureEventHub服务,除了正常的生产,消费消息以外,如果想拿到EventHub中存储的历史消息?有什么方法呢? 问题解答获取EventHubs存储的历史消息,首先需要确保消息进入EventHub的时间处于保留期限(RetentionDays)内,因为超过这个期限消息会被删除。如果确认在期限......
  • Vue——登录小案例、scoped、ref属性、props其他、混入mixin、插件、Element-ui
    解析Vue项目#1为什么浏览器中访问某个地址,会显示某个页面组件 根组件:APP.vue必须是 <template><divid="app"><router-view></router-view></div> </template>1配置路由 router--->index.js---&......
  • 各类配置文件(DNS, Firefox,Edge)
    DNS配置腾讯DNS:119.29.29.292402:4e00:: 2402:4e00:1::阿里云:223.5.5.5223.6.6.62400:3200::12400:3200:baba::1黑龙江联通:202.97.224.68202.97.224.69CiscoDNS208.67.222.222208.67.220.2202620:119:35::352620:119:53::53浏览器配置Firefoxabout:confi......
  • ARM Trusted Firmware - version 1.3
    ARMTrustedFirmware-version1.3ARMTrustedFirmwareprovidesareferenceimplementationofsecureworldsoftwarefor ARMv8-A,includinga SecureMonitor executingatExceptionLevel3(EL3).ItimplementsvariousARMinterfacestandards,suchasthe......
  • 正则表达式 re模块
    目录正则表达式字符组字符量词贪婪匹配和非贪婪匹配转义符\re模块常用方法无名分组和有名分组正则表达式正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻......
  • Java 表单注册常用正则表达式验证工具类
    http://springmvc-springdata.iteye.com/blog/2114555Java表单注册常用正则表达式验证工具类,常用正则表达式大集合。1.电话号码2.邮编3.QQ4.E-mail5.手机号码6.URL7.是否为数字8.是否为中文9.身份证10.域名11.IP。。。。常用验证应有尽有!这的确是您从事web开发......
  • 正则表达式
    正则表达式正则表达式就是用一些特殊的符号去筛选想要的数据,简称正则字符组[0123456789][0-9]\d#匹配0到9之间的数字[a-z]#匹配a-z之间的字母[A-Z]#匹配A-Z之间的字母字符.#匹配除换行符之外的任意字符\w#匹配字母、数字、下划线\W......
  • [ASP.NET Core] 请求大小限制(转载)
    请求大小一般在文件上传的时候会用到,当然也防止传过来的参数过大情况。一、设置请求体的最大值如果不设置请求体大小默认是 30_000_000bytes,大约28.6MB,当超出大小时会出现如下错误:错误:Failedtoreadtherequestform.Requestbodytoolarge.Themaxrequestbodysize......
  • RedisTemplate常用方法总结
    很多公司都将redisTemplate进行了封装,封装成业务所需要的RedisUtil工具类方便进行调用,本篇文章总结了redisTemplate常用的一些方法。Redis常用的数据类型:•String•Hash•List•Set•zSet•SortedsetString类型判断是否有key所对应的值,有则返回true,没有则返回false......
  • 新的权限模型Matrix data access structure介绍
    这是我的第494篇原创文章,写于2023年6月8日。2021年11月2日,PowerApps博客的博文 AnnouncingPublicPreviewformodernizebusinessunits 宣布了ModernizedBusinessUnits开启Publicpreview阶段,到本文写作时,这个Feature已经GeneralAvailable了。相关功能介绍请参考官方文档......