python中的正则表达式是什么意思,python中的正则表达式是干嘛的

  python中的正则表达式是什么意思,python中的正则表达式是干嘛的

  正则表达式是一种独立的搜索和匹配字符串的语言,但它已经在各种编程语言中实现,其中perl的正则表达式是一种模型,许多其他编程语言都参考perl的正则语法来实现。python中的正则表达式是通过内置的模块re实现的,类似于perl的正则表达式操作。如果你熟悉perl,你也可以轻松上手python的正则性。

  基本用法如下

  a=重新搜索(rc , abc123 )

  a

  关于。匹配对象;Span=(2,3),match=c 其中R前缀指定的字符串称为正则表达式的模式,后跟要匹配的字符串。常规的搜索引擎会从字符串的开头开始搜索,寻找符合条件的字符。上面的示例从字符串abc123的开头开始搜索,以查找特定的字符c。

  对于正则表达式,有以下基本概念

  1.字符集正则的基本功能是匹配字符串。在开始的例子中,使用指定的字符进行匹配,这无疑更加准确,但缺乏灵活性,例如匹配以下两个字符中的数字。

  abc123

  abc456

  如果指定数字匹配,那么上面两个字符的匹配会写成两种方式。

  重新搜索(r123 , abc123 )

  重新搜索(r456 , abc456 )

  这显然太局限了。为了更加通用,提出了字符集的概念,预先定义了几个匹配常用字符的字符集。

  \d,匹配0到9之间的数字\w,匹配数字、字母和下划线中的任何字符,匹配任何空白字符,即,\r\b\n\t\f,\D,匹配任何非数字字符\W,匹配任何非数字字符,字母,另外,自定义字符集由方括号支持,用法如下。

  #相当于\d

  [0-9]

  #相当于\w

  [A-Za-z0-9_]

  #相当于\s

  [\r\n\t\f]使用字符集来匹配上面的示例,编写如下

  re.search(r\d\d\d , abc123 )

  re.search(r\d\d\d , abc456 )

  这样,用同样的规律也是可以的。

  2.量词也可以从基本用法看出来。默认情况下,一个字符集只匹配一个字符,以匹配延长的大小写,例如匹配以下两个字符串中的数字

  abc123

  abc1234

  您可以在正则模式后添加量词来控制正则匹配的数量。常用的量词如下

  *匹配0或任意次数匹配1或任意次数?匹配0到1次{m},匹配M次{m}:匹配M次以上{m,n}:匹配M到N次的用法词。上面的匹配是这样写的

  重新搜索(r\d , abc123 )

  重新搜索(r\d , abc1234 )

  量词用了以后,就比较笼统了。默认情况下,量词是贪婪匹配的,即匹配与模式匹配的最长字符。请参见下面的示例。

  re . search(r [\ w;] ;,abc123;123)

  关于。匹配对象;span=(0,8),match= abc123;当使用加号时,匹配第二个分号。这时,如果只需要匹配第一个分号,我们可以加上?使其成为非贪婪匹配,如下所示

  re . search(r [\ w;] ?,abc123;123)

  关于。匹配对象;span=(0,4),match= abc可以看到,在非贪婪匹配中,当遇到第一个匹配模式的字符时,程序会停止,以后不会继续搜索,但默认的贪婪模式会接着向下搜索。

  3.位置限定符默认情况下,正则性从字符串的开头开始搜索,在任何位置查找与模式匹配的字符。但是有时候我们需要匹配字符的位置,比如后面字符串末尾的数字。

  123abc123

  在这一点上,我们需要使用位置限定符,也称为锚,常用如下

  匹配字符串的开头$匹配字符串的结尾\A匹配字符串的开头\Z匹配字符串的结尾\b,单词的边界\B,带锚点的非单词的边界。上面的匹配是这样写的

  重新搜索(r\d $ , 123abc123 )

  4.模式修饰符修饰符影响常规匹配行为。常用的修饰词如下

  关于。I,不区分大小写匹配re.s .此时,点号也可以匹配换行符re.m .多行匹配修饰符的用法如下所示。

  重新搜索(rABC , 123abc ,re。我)

  除了上面的写法,还支持下面的写法

  re.search(r (?一)ABC , 123abc )

  re.search(r (?我:ABC)’,“公元前123年”)

  在括号里的问号后面加一个修饰语,I对应re。一、正则表达式在实际开发中的常用情况如下

  1.检查字符串是否匹配特定模式的条件判断常用作逻辑判断语句,其用法如下

  if re.search(r\d , abc123 ):

  打印(“成功”)

  否则:

  打印(“失败”)2。提取与模式匹配的字符串。通过在模式两端添加括号,可以捕获相应的字符,用法如下

  #在正则化中使用括号来捕获

  re.search(r(abc)(123), abc123 )

  关于。匹配对象;span=(0,6),match=abc123

  # groups函数返回捕获元素的元组。

  re.search(r(abc)(123), abc123 )。组()

  (“abc”,“123”)

  #组函数的默认值为0

  re.search(r(abc)(123), abc123 )。群组()

  abc123

  #下标0返回要匹配的原始字符串。

  re.search(r(abc)(123), abc123 )。组(0)

  abc123

  # subscript 1返回第一个捕获的字符串。

  re.search(r(abc)(123), abc123 )。组(1)

  “abc”

  # subscript 2返回第二个捕获的字符串。

  re.search(r(abc)(123), abc123 )。第二组

  1233,替换特定字符串。使用re.sub函数更改特定字符串。用法如下

  re sub(r abc , ABC , abc123abc )

  ABC123ABC

  re sub(r abc , ABC , abc123abc ,count=1)

  “ABC123abc”的返回值是被替换的字符串,count参数控制替换的次数。默认值为0,这意味着进行所有替换。另外还有一个re.subn函数,它的返回值是一个由被替换的字符串和替换次数组成的元组。它的用法如下

  re.subn(rabc , abc , abc123abc )

  ( ABC123ABC ,2)3。灵活分隔字符串字符串附带的split方法只允许用固定字符分隔字符串。使用re.split函数,可以使用正则性来分隔字符串,这样更灵活。用法如下

  re.split(r[:=], A=B:C )

  [A , B , C]4。查找特定的字符串。通过re.findall函数查找与模式匹配的所有字符串,其用法如下

  re.findall(r\d , 123abc123abc123 )

  [123 , 123 , 123]返回值是一个列表,对应的有一个re.finditer函数,返回值是一个迭代器。它的用法如下

  number=re.finditer(r\d , 123abc123abc123 )

  对于I在数量上:

  .打印(i.group())

  .

  123

  123

  23除了常用的re.search函数,还有一个re.match函数,只支持从一个字符串的开头开始匹配。示意图如下

  #数字不在开头,没有结果

  re.match(r\d , abc123 )

  #开头有一个数字,给出匹配结果

  重新匹配(r\d , 123abc )

  关于。匹配对象;span=(0,3),match=123

  #搜索更加灵活

  重新搜索(r\d , abc123 )

  关于。匹配对象;Span=(3,6),match=123 。可以看到,和search相比,match自动在正则开头加一个锚符号,其他行为也是一样的。

  目标

  —如果你喜欢,分享给你的朋友—

  关注我们,解锁更多精彩内容!

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

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