python的strip_ge = re.compile(r"^ge(.4,)")怎么理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的strip_ge = re.compile(r"^ge(.4,)")怎么理解相关的知识,希望对你有一定的参考价值。

不是很明白括号里的r"^ge(.4,)"是什么意思

在r"^ge(.4,)")中

r表示原生字符串,即 不用对正则表达式中的反斜杠再转义。

^ge表示以ge开头的字符串。

.4,表示除回车换行符外的4个及以上的任意字符。

r"^ge(.4,)")表示捕获以ge开头的字符串中ge后面的部分。

完整的Python程序如下。

import re

strip_ge = re.compile(r"^ge(.4,)")

m=strip_ge.search('gehelloworld')

if m==None:

print(m)

else:

print(m.group(1))

源代码(注意源代码的缩进)

追问

大神能否告知这些又是什么意思呢,采纳直接给你了谢谢

追答

r"(.)\1"表示两个重复的任意字符,比如:"aa","哈哈"。
r"e[mr]$"表示以em或er结尾的字符串,比如:"them","teacher"。
r"nd$"表示以nd结尾的字符串,比如:"stand"。
r"t$"表示以t结尾的字符串,比如:"student"。
r"[esn]$"表示以e或s或n结尾的字符串,比如:"nine","words","python"。
r"(.)\*"表示匹配任意字符和星号字符,比如:"f*"。

参考技术A

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象

括号内可以匹配:以字母ge开头至少4个任意字符(不包括换行符,并作为一组),例如:

可匹配到:"ge1aA_",但匹配不到"ge1aA"

python re模块findall()详解

import re

string="abcdefg  acbdgef  abcdgfe  cadbgfe"

#带括号与不带括号的区别
#不带括号
regex=re.compile("((w+)s+w+)")
print(regex.findall(string))
#输出:[(‘abcdefg  acbdgef‘, ‘abcdefg‘), (‘abcdgfe  cadbgfe‘, ‘abcdgfe‘)]

regex1=re.compile("(w+)s+w+")
print(regex1.findall(string))
#输出:[‘abcdefg‘, ‘abcdgfe‘]

regex2=re.compile("w+s+w+")
print(regex2.findall(string))
#输出:[‘abcdefg  acbdgef‘, ‘abcdgfe  cadbgfe‘]

第一个 regex 中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple 

第二个 regex 中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

第三个 regex 中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

 

结论:findall()返回的是括号所匹配到的结果(如regex1),多个括号就会返回多个括号分别匹配到的结果(如regex),如果没有括号就返回就返回整条语句所匹配到的结果(如regex2)。所以在提取数据的时候就需要注意这个坑。

实际上是由其并不是python特有的,这是 正则 所特有的 , 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容,没有括号【相当于在最外层增加了一个括号】。在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容

以上是关于python的strip_ge = re.compile(r"^ge(.4,)")怎么理解的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python在网站中查找反向链接[关闭]

python(字符串操作)

python,用正则表达式匹配特定汉字

python2和python3的区别

python能做啥有趣的东西

python初识