美文网首页Python开发Python爱好者Python中文社区
使用Python魔术方法实现正则表达式的新语法

使用Python魔术方法实现正则表达式的新语法

作者: 远飞的大雁2010 | 来源:发表于2016-10-08 11:39 被阅读39次

读了《用 Python 的魔术方法做出更好的正则表达式 API》 后深受启发。一直觉得Python的re模块用起来不舒服,决定按照该文的方法自已来实现一套正则表达式的语法。

re模块中的主要功能有match、search、fullmatch、finditer、findall、split、sub等方法,其中常用的也就那么几种。

重构后的新语法

判断是否匹配

if R/"\d+" == '12345':
    print("完全匹配")

if R/"\d+"/"1234adfc":
    print("存在匹配的记录")

第一个语法要求完整匹配,第二个只判断是否存在匹配的记录,如果需要从头匹配,可以在pattern的前面加“^”。

查找所有匹配的记录

for m in R/'\d+'//'123,456,789':
    print(m.group())

返回的结果为Match对象,可以通过groups、group、groupdict等方法获取匹配的内容。

搜索匹配内容

m=R/'\d+'%'abc856fds5868'
print(m.group())

从指定的字符串中搜索第一个匹配的记录。

查找所有匹配的内容

for s in R/'\d+'/'123,456,679':
    print(s)

返回的结果为匹配的字符串。

拆分字符串

for s in R/'[, |]'|'abc,def fang|jun':
    print(s)

返回的结果为拆分的字符串。

替换字符串

s=R/'hunter'/'hunter is a good person'%'lisi'

直接返回替换完成的结果。如果需要替换的次数,可以按如下的语法指定:

s=R/'good'/'a good student is a good student'%('good',1)

上面的代码只替换第一个good。

特别提示

针对上面所有的语法,除了指定正则表达式的模板外,还可以指定相应的flag。示例如下:

if R/('abc','i')=='ABC':
    print('不区分大小写匹配')

其中标签可以为字符串(不区分大小写),也可以为整数的标签。

安装方法

pip install orange-kit

使用方法

from orange import R

if R/'test'=="test":
    print('完全匹配')

# 以下为传统用法
PATTERN=R/'1[3-8]\d{9}'  # 手机号的正则表达式
s='张三 13300000001  李四 13400000005'

# 查找并打印所有的手机号
for k in PATTERN.findall(s):
    print(k)

下载源代码

git clone git@github.com:huangtao-sh/orange.git

相关文章

  • Python入门教程:re模块

    上文介绍的是正则表达式本身的语法知识,并未涉及实际使用的方法。本文将介绍在Python语言中如何使用正则表达式。 ...

  • 使用Python魔术方法实现正则表达式的新语法

    读了《用 Python 的魔术方法做出更好的正则表达式 API》 后深受启发。一直觉得Python的re模块用起来...

  • Python魔术方法

    Python魔术方法 Python 魔术方法指南 — PyCoder’s Weelky CNPython的魔术方法...

  • Python正则表达式

    正则表达式中,常用的匹配模式: python 正则表达式的语法: 使用正则表达式,需要导入模块: 输出结果:['h...

  • python魔术方法

    魔术方法 简单说下魔术方法的概念,python 语言的一种语法特性,可以让一些函数不用被显式的调用的时候被执行。这...

  • python 魔术方法

    python 魔术方法 前言 在做python开发的过程中,我们大家都会遇到在class(类)中使用双下划线的方法...

  • python基础——re(正则表达式)

    1 python正则表达式 python中正则表达式一般使用自带的re模块,本文将简单介绍该模块的使用方法和注意事...

  • re正则表达式——python

    使用形式化模式搜索和修改文本。python中正则表达式通过re模块使用语法以per语言语法为基础。 查找文本中的模...

  • 正则表达式

    Python中包含正则表达式的模块。 使用前先导入正则表达式模块: 语法: re.match 从头开始匹配re.s...

  • python正则表达式---基于re模块

    正则表达式是很通用的一套规则,而本文是基于python的re模型的实现,来讲解正则表达式的语法。常见的正则表达式如...

网友评论

    本文标题:使用Python魔术方法实现正则表达式的新语法

    本文链接:https://www.haomeiwen.com/subject/dspryttx.html