首页 > 其他分享 >正则表达式

正则表达式

时间:2023-06-08 19:13:17浏览次数:26  
标签:字符 匹配 正则表达式 res re print findall

正则表达式

正则表达式就是用一些特殊的符号去筛选想要的数据,简称正则

字符组

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

字符

.     # 匹配除换行符之外的任意字符

\w   # 匹配字母、数字、下划线

\W   # 匹配除字母、数字、下划线之外的字符

\d    # 匹配0-9之间的数字

\D    # 匹配除数字之外的字符

\n    # 匹配一个换行符

^     # 匹配字符串的开始

$     # 匹配字符串的结尾

a|b   #匹配字符a或字符b

[...]   # 匹配字符组中的字符

[^...]  # 匹配除了字符组中的字符

 

量词

1.量词只能影响前面的一个字符

2.量词不能单独使用,必须配合其他字符串使用

*  重复零次或更多次

+  重复一次或者更多次

?  重复零次或者一次

{n}  重复n次

{n,}  重复n次或者更多次

{n,m}  重复n到m次

贪婪匹配和非贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串(默认采用贪婪匹配)

非贪婪匹配:.*?,在满足匹配时,匹配尽可能短的字符串

<script>123</script>   # 待匹配字符
# 正则表达式是:<.*>
匹配结果为:<script>123</script>  #贪婪匹配



<script>123</script>   # 待匹配字符
# 正则表达式是:<.*?>
匹配结果为:<script>    # 非贪婪匹配

转义字符

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

待匹配字符:\n
正则表达式:\n
匹配结果:False

待匹配字符:\n
正则表达式:\\n
匹配结果:True

待匹配字符:'\\n'
正则表达式:"\\\\n"
匹配结果:True

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

 

re模块

1.re模块是内置的模块,可以直接使用的

2.在python中,要想使用正则需要借助re模块:import re

re.findall:返回所有满足匹配条件的结果,放在列表里,如果匹配不到就返回空列表[ ]

re.search:只会找到第一个匹配值,然后通过group()进行匹配,如果找不到就返回None
re.match:与search用法相同,但是只有匹配值在第一个才能输出,不然会报错
re.split('[ab]', 'abcd') :这个先按a进行分割,得到bcd后,按b进行分割,得到cd,最终的结果 ['', '', 'cd']

 # findall的优先级查询:
import re

ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['www.oldboy.com']

 

分组

无名分组

# 对于findall,它具有分组优先展示, 也称之为是无名分组
res = re.findall('^[1-9]\d{14}(\d{2}[0-9x]?)$','110105199812067023')
print(res)  # ['023']

# 当加了?:会取消优先展示
res = re.findall('^[1-9]\d{14}(?:\d{2}[0-9x]?)$','110105199812067023')
print(res)  # ['110105199812067023']

有名分组

res = re.search('^[1-9]\d{14}(?P<month>\d{2}[0-9x]?)$','110105199812067023')
print(res) #  <_sre.SRE_Match object; span=(0, 18), match='110105199812067023'>
# print(res.group(1))
print(res.group()) # 110105199812067023
print(res.group(1))   # 023
print(res.group('month'))   # 023

 

标签:字符,匹配,正则表达式,res,re,print,findall
From: https://www.cnblogs.com/Lucky-Hua/p/17467411.html

相关文章

  • 揭开正则表达式的神秘面纱
    揭开正则表达式的神秘面纱1.正则表达式规则1.1普通字符   字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。   举例1:表达式"c",在匹配字符串"abcde"时,匹配结果是:成......
  • 正则表达式30分钟入门教程(第二版),正则讲解
    作者:mfkidt目录本文目标如何使用本教程什么是正则表达式?入门测试正则表达式元字符字符转义重复字符类反义替换分组后向引用位置指定负向位置指定注释贪婪与懒惰平衡组还有些什么东西没提到一些我认为你可能已经知道的术语的参考网上的资......
  • Javascript常用正则表达式集合
    1.匹配正整数:/^[0-9]*[1-9][0-9]*$/2.匹配非负整数(正整数+0):/^\d+$/3.匹配中文:/^[\u4e00-\u9fa5]/4.匹配Email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/5.匹配网址URL:/^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?/6......
  • python基础day21 正则表达式和re模块
     正则表达式的介绍他是一门独立的语言,跟python等的语言没有任何的关系,但是其他语言可以使用正则表达式来做一些功能,主要是用来筛选数据的^(13|14|15|18)[0-9]{9}$形如上述代码的就是正则表达式什么是正则表达式:利用一些特殊符号匹配出想要的数据就是正则表达式,简称正则......
  • python 网络爬虫技术 运用正则表达式爬取当当网(实战演练)
    爬取网络:当当网代码importreimportrequestsimporttimeimportxlwturl_basic='http://search.dangdang.com/?key='heads={'Connection':'keep-alive','Accept-Language':'zh-CN,zh;q=0.9','......
  • 初步了解的python的正则表达式
    Python正则表达式|菜鸟教程(runoob.com)Python正则表达式 regex正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能......
  • 用户名验证(正则表达式)
    功能需求:如果用户名输入合法,则后面提示信息为:用户名合法,并且颜色为绿色如果用户名输入不合法,则后面提示信息为:用户名不符合规范,并且颜色为红色正则表达式:/^[a-zA-Z0-9_-]{6,16}$/onblur事件:onblur事件发生在对象失去焦点时。onblur事件最常与表单验证代码一起使用(例......
  • c#正则表达式适配数学表达式(一)
    近日在做某项目时候,里面涉及到了与数学表达式有关的计算,为了高效的适配数学表达式现以正则表达式进行提取予以分享,若有需要的小伙伴可参考,具体如下:///<summary>///正则表达式助手///</summary>publicclassRegularHelper{///<summary>......
  • 正则表达式regex = /^\/[^/]+/;
    这个代码片段是使用JavaScript语言定义了一个正则表达式(regularexpression),它用于匹配一个以斜杠(/)开头的字符串中的第一段。现在来逐步解释这个正则表达式的每个部分:^:这是一个锚点,表示匹配字符串的开头。\/:这是一个转义后的斜杠字符,用于匹配实际的斜杠字符。[^/]+:这是......
  • Python正则表达式学习(5)——re.findall()
    re.findall(pattern,string,flags=0)返回字符串中模式的所有非重叠匹配,作为字符串列表。字符串从左到右扫描,并按照找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组的列表;如果模式有多个组,这将是一个元组的列表。结果中包含空匹配,除非他们触及另一个匹配的开始。In[1......