python正则表达式变量
Ⅰ python 基础教程 第10章,正则表达式匹配问题
importre
a=re.compile(r'[(.+?)]')
scope={}
defreplace(ddd):
code=ddd.group(1)
try:
returnstr(eval(code,scope))
exceptSyntaxError:
exec(code,scope)
returncode
print(a.sub(replace,'[x=1],[y=2],[z=2],thesumof[x],[z]and[y]is[x+y+z]'))
scope是在全局变量里保存正则匹配出来的x,y,z变量,存到全局变量里去;
这本书的案例在except SyntaxError:后面少了点代码,只提供注释,前面其实已经提到用exec赋值了,只是代码里没有体现出来,我完善了下这个应该能看懂了,还有[],正则已经把[]替换掉了,换成x,y,z对应的值
Ⅱ python 正则表达式是什么
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。
正则表达式的大致匹配过程是:
1、依次拿出表达式和文本中的字符比较。
2、如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3、如果表达式中有量词或边界,这个过程会稍微有一些不同。
Ⅲ python正则表达式 匹配<a>标签的title
解决方法如下:
rex=r'<a.*?title="(.*?)".*?>.*?</a>'
补充一些正则表达式的知识:
##总结
##^匹配字符串的开始。
##$匹配字符串的结尾。
##匹配一个单词的边界。
##d匹配任意数字。
##D匹配任意非数字字符。
##x?匹配一个可选的x字符(换言之,它匹配1次或者0次x字符)。
##x*匹配0次或者多次x字符。
##x+匹配1次或者多次x字符。
##x{n,m}匹配x字符,至少n次,至多m次。
##(a|b|c)要么匹配a,要么匹配b,要么匹配c。
##(x)一般情况下表示一个记忆组(rememberedgroup)。你可以利用re.search函数返回对象的groups()函数获取它的值。
##正则表达式中的点号通常意味着“匹配任意单字符”
Ⅳ python正则表达式匹配的问题
你这个正则能够匹配到什么呢?只能匹配到一个空的字符串吧?
怎么可能 会匹配到那么长
而且filter_str这个变量在哪里,就是上面的str?
这样,我给你写一个代码片段,你试一下:
filter_str='filterparent1:0queue800:800something1:1500matchac100809/ffffffffadf'
a=re.search(r'.*',filter_str)
printa.group(0)
正则中的问号,如果放在 +号和 *号之后,表示正则的懒惰模式,你可以网络一下正则贪婪和正则懒惰,学习一下你就了解了。
Ⅳ python正则表达式是什么意思
表示任意字符,*表示重复0至多次,.*表示任意字符出现0到多次
Ⅵ python用正则表达式是时出现错误
这明显是类型错误,search方法的第二个参数是,字符串类型,你提供的不符合规定,所以要先给这个变量一个字符串。
希望能帮到你。。。
Ⅶ python 正则表达式的字符串变量匹配第一次出现
将这个字符串变量与“?"连接起来组成新的变量不就得了
var1="hello "
var2 ="world"
var="("+var1+")?"+var2
re.match(var,"hello world")
re.match(var,"world")
Ⅷ python正则表达式问题
你这个正则能够匹配到什么呢看只能匹配到一个空的字符串吧看
怎么可能 会匹配到那么长
而且filter_str这个变量在哪里,就是上面的str看
这样,我给你写一个代码片段,你试一下:
filter_str='filterparent1:0queue800:800something1:1500matchac100809/ffffffffadf'
a=re.search(r'.*',filter_str)
printa.group(0)
正则中的问号,如果放在 +号和 *号之后,表示正则的懒惰模式,你可以网络一下正则贪婪和正则懒惰,学习一下你就了解了。
Ⅸ 如何编写python的正则表达式
Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>> pat='中文'.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>> newpat='这里是中文内容'.decode("utf8")
>>> news=re.sub(pat,newpat,s)
>>> print news
这里是中文内容:123456aa哈哈哈bbcc
Ⅹ python 正则
p = re.compile(r'<th class="subject new">(.*?)</th>',re.S)
不要继续问为什么, 去查python手册.
还有一个小提示,不建议用str作变量名, 因为str是python内建的一个类