Python中正则表达式的使用

Posted Phile-matology

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中正则表达式的使用相关的知识,希望对你有一定的参考价值。

在进行正则表达式匹配时,直接使用正则表达式引擎和通过python中的字符串输入正则表达式引擎,需要输入不同的字符串,其主要的区别在于转义符的使用,而其中又分三种情况:

  • 转义符需要被python解析,以此输入部分python中的特殊字符
  • 转义符需要被正则表达式引擎解析,以此输入部分正则表达式语句中的特殊字符。
  • 转义符需要被正则表达式匹配

以下归纳整理三类python处理这一问题的方式:

1、鉴于python先解析字符串再将字符串输入正则表达式引擎,由引擎进行二次解析,故只需要通过逆推的方式计算正则表达式中转义符的个数

    • 需要被python解析:前加一个\'\\\'即可输入特殊字符
    • 需要被正则表达式解析:在正则表达式中前加一个\'\\\',由于输入正则表达式的应该是\'\\\'本身,不能被解析为转义操作,故在转义符前加转义符,即使用\'\\\\\'
    • 使用正则表达式匹配转义符:在正则表达式中表示为\'\\\\\',自然的,在python的字符串中应该被写为:\'\\\\\\\\\'
    • 但是,这种最机械的写法会导致字符串中出现大量的转义符,影响简洁性和可读性

2、另一个选择是借用python的一个特殊机制——当出现python无法理解的语法时,python将不作解释直接将字符串输入引擎。

    • 需要被python解析:如果利用这一机制,很可能将不会解析而产生语法问题
    • 需要被正则表达式解析:正常使用前加\'\\\',这也是这一异常处理机制的常规触发方式
    • 匹配转义符:按道理应当是\'\\\\\',但是无法确定会被解析为\'\\‘输入还是会被不加解析输入,与其在字符串中的位置有一定关系。
    • 综上,这一机制只适合那些只需在正则表达式中使用单次\'\\\'的匹配场景

3、最好的办法是使用python的原生字符串r\'string\',它的作用是使python对该字符串的使用不加解析,从而在需要转义符出现在正则表达式中时,不需要使用\'\\\\\'而只需要使用\'\\\'即可

    • 需要被python解析:不能使用原生字符串
    • 需要被正则表达式解析:只需使用\'\\\'
    • 需要匹配转义符:使用\'\\\\\'即可匹配

正则表达式的使用范围相当广泛,已经用这个做了一部分编码识别的项目并且分享了。之后还会上线一篇利用正则表达式匹配识别更多编码类型 的心得嗷~

   

以上是关于Python中正则表达式的使用的主要内容,如果未能解决你的问题,请参考以下文章

Python中正则表达式的使用

python中正则表达式的使用

学会python正则表达式就是这么简单

Python 正则表达式

Python中正则表达式

Python正则表达式就是这么简单新手必学