python 正则匹配 获取括号内字符

Python019

python 正则匹配 获取括号内字符,第1张

* 提取字典中的【】内的字符,生成可以导入到五笔词库中的txt文件。

生成后的结果:

因为正则表达式语法很难读,因此本次程序以多次的方式来讲解。

括号中的 . 表示一个字符的通配符,可以用来表示任意字符。

 +表示字符数量,数量为一个以上

【.+】表示匹配所有括号内的字符,括号内字符至少有一个或以上。 比如【啊】或者【阿公】就会被匹配进去,而【】就不会被匹配进去

只要用()把你想要的部分框起来就可以。比如  【(匹配的字符)】 ,最后出现的就是 匹配的字符

【.+】 =》 【(.+)】

效果:

最后结果如上,红框里面有哪里不对?查看原文:

原来【阿兰若】的前括号 和 【兰若】 的 后括号 匹配了。这是因为这里使用的是贪婪模式,换句话说,

【1】【2】 匹配出来的不会是  1  2 两个字符,而是: 1】【2

我们要把它改成懒惰模式:

【(.+)】=》【(.+?)】

那个问号表示的就是懒惰模式

python正则表达式 (.*?版) 替换为空 注意小括号是中文小括号

完整的Python程序如下

#!/usr/bin/env python

#encoding: utf-8

import re

str = '多摩君1(英文版)\n多摩君2(四川话版) \n多摩君3(东北版)\n多摩君4(上部) '

out = re.sub('(.*?版)', '', str)

print out

输出

多摩君1      

多摩君2     

多摩君3     

多摩君4  (上部)

正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。

注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间。

re模块在Python中提供对Perl类正则表达式的完全支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。

在这篇文章中,将介绍两个重要的功能,用来处理正则表达式。 然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义。 为了在处理正则表达式时避免混淆,我们将使用:r'expression'原始字符串。

匹配单个字符的基本模式

编译标志可以修改正则表达式的某些方面。标志在re模块中有两个名称:一个很长的名称,如IGNORECASE,和一个简短的单字母形式,如。

1.match函数

此函数尝试将RE模式与可选标志的字符串进行匹配。

下面是函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.match函数在成功时返回匹配对象,失败时返回None。使用match(num)或groups()函数匹配对象来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

2.search函数

此函数尝试将RE模式与可选标志的字符串进行匹配。

下面是这个函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.search函数在成功时返回匹配对象,否则返回None。使用match对象的group(num)或groups()函数来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

3.匹配与搜索

Python提供基于正则表达式的两种不同的原始操作:match检查仅匹配字符串的开头,而search检查字符串中任何位置的匹配(这是Perl默认情况下的匹配)。

示例

当执行上述代码时,会产生以下结果 :

4.搜索和替换

使用正则表达式re模块中的最重要的之一是sub。

模块

此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。

示例

当执行上述代码时,会产生以下结果 :

5.正则表达式修饰符:选项标志

正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面。 修饰符被指定为可选标志。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 :

6.正则表达模式

除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都与其自身匹配。 可以通过使用反斜杠将其转换为控制字符。

7.正则表达式示例

字符常量

字符类

特殊字符类

重复匹配

非贪婪重复

这匹配最小的重复次数 :

用圆括号分组

反向引用

这与以前匹配的组再次匹配 :

备择方案

python|perl : 匹配“python”或“perl”

rub(y|le) : 匹配 “ruby” 或 “ruble”

Python(!+|?) : “Python”后跟一个或多个! 还是一个?

锚点

这需要指定匹配位置。

带括号的特殊语法

开课吧广场-人才学习交流平台-开课吧