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

正则表达式

时间:2022-10-25 20:44:24浏览次数:53  
标签:字符 匹配 正则表达式 res re print

正则表达式

一、正则表达式

正则表达式是一些特殊的符号组合在一起产生一些特殊含义,它能帮助我们方便的检查一个字符串中符合条件的数据值。
正则表达式线上测试网址:http://tool.chinaz.com/regex/

二、正则表达式之字符组

字符组就是一组字符,在正则表达式中,列出用[]之间所有的字符。简单的字符组比如[0-9]、[a-z]、[A-Z]等。
1.[0-9] 列出字符组中0到9之间的任意数字:
        字符组:"0123ab456cd789"
        正则表达式:[0-9]
        结果是:[0123456789]
2.[a-z] 列出字符组中a到z之间的任意字母
        字符组:"abcd1ef2ghi98z"
        正则表达式:[a-z]
        结果是:[abcdefghiz]
3.[A-Z] 列出字符组中A到Z之间的任意字母:
        字符组:"AB12CD3abEFZ"
        正则表达式:[A-Z]
        结果是:[ABCDEFZ]
ps:字符组在没有量词修饰的情况一次只会针对一个数据值。

三、正则表达式之特殊符

1 符号 含义
2 . 匹配除换行符外的任意字符
3 \w 匹配字母或数字或下划线
4 \W 匹配非字母或数字或下划线
5 \d 匹配数字
6 ^ 匹配字符串的开头
7 $ 匹配字符串的结尾
8 | 或;a|b:匹配a或b
9 () 给正则表达式分组,不影响正则表达式的匹配
10 [] 匹配字符组中的字符
11 [^] 匹配除了字符组中字符的所有字符

四、正则表达式之特殊符

编号 符号 量词
1 * 重复零次或更多次(默认尽可能多)
2 + 重复一次或更多次(默认尽可能多)
3 ? 重复零次或一次(默认一次)
4 {n} 重复n次
5 {n,} 重复n次或更多次
6 {n,m} 重复n到m次

五.贪婪匹配与非贪婪匹配

1.贪婪匹配
        默认都是贪婪匹配
2.非贪婪模式
        只需要在量词后面加上"?"就可以让贪婪匹配变成非贪婪匹配
ps:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般都是用“.*”或“.*?”,并且结束的标志有上述符号左右两边添加的表达式绝对。    

六、转义符

1.使用场景
        当要匹配没有没有换行含义的"\n"时需要取消它自带的换行含义
2.使用方式
        在正则表达式中取消转义使用 "\" (每个"\"只能取消一个字符的转义)
#斜杠与字母的组合有时候有特殊含义
\n     	   匹配的是换行符
\\n			匹配的是文本\n
\\\\n		匹配的是文本\\n
ps:如果是在python中使用 还可以在字符串前面加r取消转义

七、re模块

在python中想要使用正则表达式 re模块是其中选择之一。
re模块的常用方法:
序号 方法 用法
1 findall 列出字符串中模式的所有匹配项
2 finditer 将所有匹配到的项生成一个迭代器
3 search 在字符串中查找 。第一个匹配到的对象或者None(返回一个match对象)
4 match 在字符串的开始处匹配模式。 字符串开始没有则 None(返回一个match对象)
5 compile 提前设置好正则表达式后面可以直接调用
6 match.group(index) 将match对象拆分成字符串。不写index默认是0
7 match.groups() 将match对象转换成元组
import re  # 别忘了导包
res = re.findall('a','aa and bb and abc')
print(res) 
# ['a', 'a', 'a', 'a', 'a']
 
res = re.finditer('a','aa and bb and abc')
print(res)  # <callable_iterator object at 0x7f9c1aba5f70> 迭代器
 
res = re.search('a','aa and bb and abc')
print(res)        # <re.Match object; span=(0, 1), match='a'>
print(res.group()) # a
 
res = re.match('a','aa and bb and abc')
print(res)    # None
 
obj = re.compile('a')
print(re.findall(obj,'asdccecaawsa'))    # ['a', 'a', 'a', 'a']
print(re.findall(obj,'dsfsaaecacek'))    # ['a', 'a', 'a']

八、re模块之()用法

1.分组优先

import re
res = re.findall('and','aandbandcandabc')
print(res)    # ['and', 'and', 'and']
 
res = re.findall('a(n)d','aandbandcandabc')
print(res)    # ['n', 'n', 'n']
 
'''
findall针对分组的正则表达式匹配到的结果优先显示
可以用 (?:)取消优先显示'''
 
res = re.findall('a(?:n)d','aandbandcandabc')
print(res)    # ['and', 'and', 'and']

2.取别名

import res
res = re.search('a(?P<id>b)(?P<name>c)','abcabcabcabc')
print(res.group())    # abc
print(res.group(1))    # b
print(res.group('id'))    # b
print(res.group('name'))    # c

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

相关文章

  • 正则表达式,re模块
    正则表达式正则表达式前戏我们日常生活中有很多地方都能用到正则表达式比如说我们登录的时候输的手机号其实内部需要校验是否是11位纯数字,是不是13,15,17,18,19开头的......
  • 正则表达式
    正则表达式描述正则表达式是一门独立的技术,所有的语言都可以使用它是利用一些特殊符号的组合或者直接写需要查找的字符来产生一些特殊的含义然后去给定的字符串中筛选出......
  • re模块和正则表达式
    内置模块之re模块re模块可以配合正则表达式使用。在很多网页中,要求输入手机号、邮箱等,会在我们还没输完的情况下就提示我们在“请输入正确的手机号”“邮箱格式不正确”......
  • 正则表达式
    内容概要购物车程序设计正则表达式字符组量词贪婪匹配与非贪婪匹配转义符正则表达式实战re模块简易爬虫题目购物车程序设计1.项目框架搭建空函数功能字典......
  • 正则表达式
    概念正则表达式可以用来匹配字符串,可以实现字符串的截取或者按规则替换和验证字符串的内容在js中创建正则表达式对象varreg=newRegExp("123");varreg=/123/;//......
  • 牛客BM76(正则表达式匹配)
    BM76正则表达式匹配具体实现:1.确定dp数组以及下标的含义dp[i][j]代表s中以i结尾的子串和p中j为结尾的子串是否匹配2.状态转移(1)p[j]为普通字符:匹配的条件是前面的字符......
  • 正则表达式
    一、正则表达式    是用来描述字符串内容格式,使用它通常用于匹配一个字符串的内容是否符合格式要求。1.[]:表示一个字符,该字符可以是[]中指定的内容例如:[a......
  • JavaScript学习--正则表达式
       /[^0-9]/g表示除了0-9其他所有的更多在https://www.runoob.com/regexp/regexp-tutorial.html ......
  • 正则表达式
    正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。构......
  • Python正则表达式(Python RegEx)
    Python正则表达式目录Python正则表达式快速参考函数详解match()search()捕获和分组Match对象sub()compile()findall()finditer()split()参考博客与示例代码快速参考常用......