gpt4 book ai didi

【python技巧】文本处理-re库字符匹配

转载 作者:我是一只小鸟 更新时间:2023-09-19 23:01:55 28 4
gpt4 key购买 nike

目录
  • 1. 正则表达式
    • 1.1 测试工具
    • 1.2 限定符
    • 1.3 字符集
    • 1.4 运算符
    • 1.5 元字符
    • 1.6 懒惰匹配和贪婪匹配

我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。
在Python中,还有一个专门用于文本处理的库,那就是 re 库。
下面我会介绍re库涉及的正则表达式的基本知识。
参考课程

1. 正则表达式

正则表达式是用来进行字符串匹配的一个字符形式.

1.1 测试工具

常见的正则表达式测试工具有:

  1. regex101
  2. 代码编辑器搜索栏的正则表达式匹配

1.2 限定符

  1. ? abc? 表示字符 c 需要出现0次或者1次,或者换句话说,字符 c 至多出现一次。也就是说, abc? 相当于 abc 和 ab 这两个字符串.

  2. * ab*c 表示字符 b 需要出现0次或者多次,或者换句话说,字符 b 可以出现任意多次。也就是说, ab*c 相当于 ac 、 abc 、 abbc 、 ab……bc 等多个字符串.

  3. + ab+c 表示字符 b 需要出现1次或者多次,或者换句话说,字符 b 至少出现一次。也就是说, ab+c 相当于 abc 、 abbc 、 ab……bc 等多个字符串。 注意 ab*c 和 ab+c 的细微区别.

  4. {} 。

  • {num} ab{3}c 表示字符 b 需要出现3次,或者换句话说,字符 b 只能出现2次。也就是说, ab{2}c 相当于 abbc 这一个字符串.

  • {num1,num2} ab{2,5}c 表示字符 b 需要出现2或3或4或5次,也就是说, ab{2,5}c 相当于 abbc 、 abbbc 、 abbbbc 、 abbbbbc 这四个字符串.

  • {num,} ab{2,}c 表示字符 b 需要出现2次及以上,也就说, ab{2,}c 相当于 abbc 、 abbbc 、 abbbbc 、 ab……bc 等无数个字符串.

1.3 字符集

在正常情况下,上述的限定符只会对其前面的一个字符起作用。如果想要某个字符串作为一个组合,可以使用字符集。 (ab)+c 表示字符串 ab 需要出现1次或者多次,或者换句话说,字符串 ab 至少出现一次。也就是说, (ab)+c 相当于 abc 、 ababc 、 abababc 、 ab……abc 等多个字符串.

1.4 运算符

  1. | a(b|d)c 表示字符串 b 出现1次或者字符串 d 出现1次,也就是说, a(b|d)c 相当于 abc 、 adc 这两个字符串。 a(boy|girl)c 也同样适用,相当于 aboyc 或者 agirlc 这两个字符.

  2. [] [] 表示匹配字符能选择的范围,成为字符类,例如, [abc]+ 只会匹配a\b\c这三个字母出现一次或多次的字符串,而一般更经常使用的是 [a-zA-Z0-9]* 表示由大小写字母和数字组成的字符串, [a-zA-Z0-9_]* 表示由大小写字母、数字和下划线组成的字符串.

  3. ^ ^ 表示取反字符类,也就是说, [^a-zA-Z0-9]* 表示除了大小写字母、数字符号以外的其他字符出现一次或多次的字符串.

  4. \ \. 表示转置,把一些有特殊意义的字符转变为实际字符 。

  5. \b \b 表示字符边界 。

1.5 元字符

  1. \d 数字字符
    1. \D 非数字字符
  2. \w 单词字符,包括英文字母、数字、下划线
    1. \W 非单词字符
  3. \s 空白字符,包括空格、制表符、换行符
    1. \S 非空白字符
  4. . 任意字符,不包含换行符
  5. ^ 匹配字符串的开头,例如 ^a 匹配行首的a
  6. $ 匹配字符串的结尾,例如 x$ 匹配行尾的x

1.6 懒惰匹配和贪婪匹配

  1. 贪婪匹配
    默认匹配尽可能多的字符。
  2. 懒惰匹配
    例子: <.+> 匹配 < > 之间的任意字符,而 <.+?> 则会使用懒惰匹配

最后此篇关于【python技巧】文本处理-re库字符匹配的文章就讲到这里了,如果你想了解更多关于【python技巧】文本处理-re库字符匹配的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com