菜鸟教程 python 正则表达式,python中的正则表达式用法

  菜鸟教程 python 正则表达式,python中的正则表达式用法

  这篇文章给你带来了一些关于python的知识,主要是关于正则表达式。正则表达式是可以表示一条正则信息的字符串。下面就一起来看看吧,希望对你有帮助。

  推荐:python视频教程

  00-1010正则表达式是一个字符串,它可以表示一段有规律的信息. Python自带正则表达式模块,通过这个模块你可以找到、提取、替换一条正则信息。一万个人里很难找到一个人,但是一万个人里很容易找到一个很“有特点”的人。假设有一个人,皮肤是绿色的,身高三米,那么即使这个人在一万个人当中,别人一眼就能找到他。这个“搜索”的过程在正则表达式中称为“匹配”。在程序开发中,正则表达式可以用来使计算机程序从一大段文本中找到它们需要的东西。使用正则表达式有以下步骤。(1)寻找规律。

  (2)用规则符号表达规律。

  (3)提取信息。

  00-1010

1.1正则表达式

一个点号可以替换除换行符以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号。

  00-1010一个星号可以从0次到无限次表示其前面的一个子表达式(普通字符,另一个或几个正则表达式符号)。

  以上都可以做到:(星号表示前面的表达式)

  00-1010点表示任何不是换行符的字符,星号表示其前面的字符匹配0次或任意次。所以”。* "表示匹配任意长度的字符串任意次。

  以上都可以做到:

  意思是“Ru”和“Ha”之间出现“除换行符以外任意数量的字符”。

  

1.2正则表达式的基本符号

问号表示它之前的子表达式是0或1次。注意这里的问号是英文问号

  以上都可以做到:

  00-1010组合后的用法:

  以上都可以做到:

  注意:“。*?"不同于”。*"

  .*?意思是匹配能满足要求的最短字符串。

  一句话总结如下。

   ".*:贪婪模式,获取满足条件的最长字符串。

  ".*? ":非贪婪模式,获取能满足条件的最短字符串。

  00-1010从字符串中“提取”一部分内容。

  有一串是这样的:

  可以看到,这里的密码左边有一个英文冒号,右边有一个汉字“你”。构造正则表达式时:*?你,结果会是:

  但是,冒号和汉字“您”不是密码的一部分。如果您只想要“12345abcde”,则需要使用括号:

  获取:

  00-1010在正则表达式中,很多符号都有特殊的含义,比如问号、星号、大括号、中括号、圆括号。反斜杠需要和其他字符配合使用,把特殊符号变成普通符号,普通符号变成特殊符号。

  00-1010正则表达式使用“\d”来表示一个数字。

  如果要提取两个数,可以用\ d \ d如果要提取3个数,可以用\ d \ d \ d .但是如果不知道这个数有多少位呢?您需要使用*符号来表示任意数字。

  所有这些都可以用下面的正则表达式来表示:

  

1.2.1 点号 “ . ”

Python的正则表达式模块命名为“re”,是“正则表达式”的首字母缩写。在Python中,使用之前需要导入这个模块。导入语句是:

  导入

1.2.2 星号 “ * ”

Python的正则表达式模块包含了findall方法,可以以列表.的形式返回所有符合要求的字符串

  find的功能原型是:

  关于。find all (pattern,string,flags=0) Pattern表示正则表达式,string表示原字符串,flags表示一些特殊的特性。find的结果是一个包含所有匹配结果的列表。如果没有匹配的结果,将返回一个空列表。

  当需要提取某些东西时,

  使用小括号将这些内容括起来,这样才不会得到不相干的信息。如果包含多个“(.*? )”怎么返回呢?如图3-2所示,返回的仍然是一个列表,但是列表里面的元素变为了元组,元组里面的第1个元素是账号,第2个元素为密码。

  函数原型中有一个flags参数。这个参数是可以省略的。当不省略的时候,具有一些辅助功能,例如忽略大小写、忽略换行符等。
这里以忽略换行符为例来进行说明要忽略换行符,就需要使用到“re.S”这个flag。
虽然说匹配到的结果中出现了“\n”这个符号,不过总比什么都得不到强。内容里面的换行符在后期清洗数据的时候把它替换掉即可。

  

1.3.2 search 方法

search()的用法和findall()的用法一样,但是search()只会返回第1个满足要求的字符串。一旦找到符合要求的内容,它就会停止查找。对于从超级大的文本里面只找第1个数据特别有用,可以大大提高程序的运行效率。

  search()的函数原型为:
对于结果,如果匹配成功,则是一个正则表达式的对象;如果没有匹配到任何数据,就是None。

  如果需要得到匹配到的结果,则需要通过.group()这个方法来获取里面的值。

只有在.group()里面的参数为1的时候,才会把正则表达式里面的括号中的结果打印出来。

  .group()的参数最大不能超过正则表达式里面括号的个数。参数为1表示读取第1个括号中的内容,参数为2表示读取第2个括号中的内容,以此类推。
(注意图里的不是findall)

  

1.3.3 compile 方法

re.findall()自带re.compile()的功能,所以没有必要使用re.compile()。

  

1.4 正则表达式的提取技巧

1.4.1 先抓大后抓小:二次提取

  

1.4.2 括号里括号外

括号内可以有其他字符。
具体影响见下图。

如果括号里面有其他普通字符,那么这些普通字符就会出现在获取的结果里面。

  推荐学习:python视频教程以上就是归纳整理Python正则表达式知识点的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: