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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。