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

正则表达式

时间:2024-04-17 13:14:05浏览次数:27  
标签:字符 匹配 正则表达式 re flags 字符串

Python 正则表达式

Python 正则表达式是一种用来匹配和处理字符串的强大工具。Python提供了re模块来支持正则表达式的使用。

re模块常用函数

  • re.compile(pattern, flags=0): 根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

  • re.search(pattern, string, flags=0): 扫描整个字符串并返回第一个成功的匹配对象,如果没有匹配则返回None。

  • re.match(pattern, string, flags=0): 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None。

  • re.fullmatch(pattern, string, flags=0): 尝试匹配整个字符串,如果匹配成功则返回一个匹配对象,否则返回None。

  • re.split(pattern, string, maxsplit=0, flags=0): 根据模式的出现位置分割字符串,返回一个列表。

  • re.findall(pattern, string, flags=0): 返回一个列表,包含字符串中所有与模式匹配的子串。

  • re.finditer(pattern, string, flags=0): 返回一个迭代器,每次返回一个匹配对象。

  • re.sub(pattern, repl, string, count=0, flags=0): 使用指定的替换字符串(可以是一个函数)替换字符串中与模式匹配的部分,返回修改后的字符串。

  • re.subn(pattern, repl, string, count=0, flags=0): 与re.sub类似,但返回一个元组,包含修改后的字符串和替换次数。

  • re.escape(pattern): 对模式中的特殊字符进行转义,返回一个合法的正则表达式。

  • re.split(pattern, string, maxsplit=0, flags=0) : 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下: 参数:

参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags 标志位,参见:正则表达式修饰符 -flags

匹配对象

我们可以使用 group() 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

正则表达式修饰符 -flags

可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

  1. re.I 忽略大小写
  2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
  3. re.M 多行模式
  4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
  5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
  6. re.X 为了增加可读性,忽略空格和 # 后面的注释

正则表达式语法

正则表达式的模式字符串由一些特殊的字符和符号组成,用来表示不同的匹配规则。这些特殊字符和符号有:

  • .:匹配除换行符之外的任何字符(除非指定了re.DOTALL标志)。

  • ^:匹配字符串的开头(除非指定了re.MULTILINE标志,此时也可以匹配每行的开头)。

  • $:匹配字符串的结尾(除非指定了re.MULTILINE标志,此时也可以匹配每行的结尾)。

  • *:匹配前一个字符零次或多次,贪婪模式。

  • +:匹配前一个字符一次或多次,贪婪模式。

  • ?:匹配前一个字符零次或一次,或者表示非贪婪模式。

  • {m}:匹配前一个字符m次。

  • {m,n}:匹配前一个字符m到n次,贪婪模式。

  • {m,n}?:匹配前一个字符m到n次,非贪婪模式。

  • [...]:定义一个字符集合,匹配其中任意一个字符。可以使用范围表示法(如[a-z])或者单独列出(如[abc])。如果在开头使用^表示取反(如[^a-z])。

  • [^...]:定义一个排除型字符集合,匹配不在其中的任意字符。

  • \:转义符,用于取消特殊字符的特殊含义,或者表示一些预定义的字符类别。例如:

    • \d:匹配任意数字,等同于[0-9]
    • \D:匹配任意非数字,等同于[^0-9]
    • \s:匹配任意空白字符,等同于[ \t\n\r\f\v]
    • \S:匹配任意非空白字符,等同于[^ \t\n\r\f\v]
    • \w:匹配任意字母数字下划线,等同于[a-zA-Z0-9_]
    • \W:匹配任意非字母数字下划线,等同于[^a-zA-Z0-9_]
    • \b:匹配单词边界,即单词和空格之间的位置。
    • \B:匹配非单词边界,即单词内部的位置。
    • \A:匹配字符串的开头,忽略多行模式。
    • \Z:匹配字符串的结尾,忽略多行模式。
    • \n, \t, \r, \f, \v, \\, \', \", \等:表示对应的特殊字符。
  • |:逻辑或操作符,表示两个子表达式之间的选择关系。

  • (...):分组符号,用于将多个字符作为一个整体进行处理或者提取。每个分组都有一个编号,从1开始。可以使用\1, \2, 等引用分组中的内容。

  • (?...): 扩展表示法,用于指定一些额外的匹配条件或者修改匹配模式。例如:

    • (?iLmsux): 在正则表达式中嵌入一个或多个标志,影响正则表达式的行为。例如, (?i)表示忽略大小写, 等同于 re.IGNORECASE.
    • (?:...): 非捕获分组, 表示一个不需要提取的分组, 不会分配编号.
    • (?P<name>...): 命名分组, 给分组指定一个名字, 可以使用 (?P=name) 引用分组中的内容.
    • (?P=name): 反向引用命名分组, 匹配与指定名字的分组内容相同的字符串.
    • (?#...): 注释, 括号中的内容会被忽略, 不影响正则表达式的功能.
    • (?=...): 正向肯定预查, 表示后面的字符串必须满足括号中的条件, 但不包含在匹配结果中.
    • (?!...): 正向否定预查, 表示后面的字符串必须不满足括号中的条件, 但不包含在匹配结果中.
    • (?<=...): 反向肯定预查, 表示前面的字符串必须满足括号中的条件, 但不包含在匹配结果中.
    • (?<!...): 反向否定预查, 表示前面的字符串必须不满足括号中的条件, 但不包含在匹配结果中.

标签:字符,匹配,正则表达式,re,flags,字符串
From: https://www.cnblogs.com/kabaiye/p/18140366

相关文章

  • 正则表达式中 “$” 并不是表示 “字符串结束
    作者:SethLarson译者:豌豆花下猫@Python猫英文:Regexcharacter“$”doesn'tmean“end-of-string”转载请保留作者及译者信息!这篇文章写一写我最近在用Python的正则表达式模块(re)开发CPython的SBOM工具时发现的一个令人惊讶的行为。如果用过正则表达式,你可能知道^表......
  • 正则表达式在字符串中表达
    ysyx的表达式求值环节需要自行编写规则。在样例里,官方已经给出了匹配空格、加号的样例。空格规则对应字符串为"+",表示匹配一个或更多空格。加号表示前面的符号至少出现一次。加号规则则是"\\+" ,首先,加号+在正则表达式里是特殊符号,需要一个反斜杠\转义才能执行,但是反斜杠......
  • 正则表达式常用学习
    0.简介regularexpression,规则表达式,是一种用来处理字符串的规则,巧妙的正则表达式可以节省很多判断代码.1.组成元字符特殊元字符\转义字符=>普通字符<=>特殊字符.点=>代表除了\n以外的任意字符(字符字符字符)^=>以哪个元字符开始$=>......
  • js正则表达式
    正则表达式创建正则对象//构造函数newRegExp('规则','标识')//字面量书写/规则/标识正则常用方法//reg是正则对象reg.test('字符串');//验证字符串是否满足规则//reg是正则对象,str是字符串str.replace(reg,'替换目标');//将字符串中匹配正则的部分替换为目......
  • 从Google网页中通过正则表达式获取json如何转换unicode对象
    场景:Google爬虫,获取下拉框搜索关键词,需要获取页面的里面的json字符串如下面:'{\\x22aa\\x22:{},\\x22abd\\x22:{\\x22abd\\x22:false,\\x22deb\\x22:false,\\x22det\\x22:false},\\x22async\\x22:{},\\x22attn\\x22:{},\\x22bgd\\x22:{\\x22ac\\x22:true,\\x......
  • 20个Python 正则表达式应用与技巧
    本文分享自华为云社区《Python正则表达式大揭秘应用与技巧全解析》,作者:柠檬味拥抱。Python中的re模块是用于处理正则表达式的强大工具。正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式。在本文中,我们将探讨Python中re模块的应用和一些技......
  • java中字符串替换的4种方法 replaceAll() 带正则表达式参数 str.replaceAll("[0-9]+
    java中字符串替换的4种方法replaceAll()带正则表达式参数str.replaceAll("[0-9]+","");目录前言一、String的replace()方法二、String的replaceAll()方法三、StringBuffer/StringBuilder的replace()方法四、Matcher的replaceAll()方法总结前言在日常开发中,我们对......
  • 常用正则表达式
    1.校验数字的表达式 1.数字:^[0-9]*$ 2.n位的数字:^\d{n}$ 3.至少n位的数字:^\d{n,}$ 4.m-n位的数字:^\d{m,n}$ 5.零和非零开头的数字:^(0|[1-9][0-9]*)$ 6.非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7.带1-2位小数的正数或负数:^(\-)?\d+(......
  • Web API(六)之正则表达式
    WebAPI(六)之正则表达式正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change事件判断是否有类正则表达式正则表达式(RegularExpression)是一种字符串匹配的模式(规则)使用场景:例如验证表单:手机号表单要求用户只能输入11位的......
  • 使用 AI 生成正则表达式,告别正则烦恼
    如果你有处理正则表达式的需求,那么这个网站(autoregex.xyz)一定要收藏好。可以根据文字描述生成正则表达式。默认是从文字到正则,不用选择。输入框中输入描述,点击”GO“按钮。等待一会儿,即可生成正则表达式。还可以解析给定的正则,说明其含义。切换成从正则到文字,然......