用python 中的findall如何提取括号中字符串的内容
20:14:0302.12.2014|BATCHMAN:AWSBHT071IJobstream(http://www.cnpythoner.com),(0AAAAAAAA...
20:14:03 02.12.2014|BATCHMAN:AWSBHT071I Job stream (http://www.cnpythoner.com),(0AAAAAAAAAAAJULH)] has completed successfully.
20:14:04 02.12.2014|BATCHMAN:AWSBHT071I Job stream (cnpythoner.org)[(2000 12/02/14),(0AAAAAAAAAAAJUJW)] has completed successfully.
我想要提取http://www.cnpythoner.com和cnpythoner.org,用findall应该怎么做?
希望能有详细的代码解释,新手不太懂python 展开
20:14:04 02.12.2014|BATCHMAN:AWSBHT071I Job stream (cnpythoner.org)[(2000 12/02/14),(0AAAAAAAAAAAJUJW)] has completed successfully.
我想要提取http://www.cnpythoner.com和cnpythoner.org,用findall应该怎么做?
希望能有详细的代码解释,新手不太懂python 展开
3个回答
展开全部
这里我们用了一个 Python的正则模块 re.findall来做字符串匹配解决这个问题.
看下正则的流程
首先说下什么是正则表达式, 正则其实就是对字符串特征的抽象!!!
当我们的字符串特性变化了,我们不需要大幅度修改程序,只要修改该特征结构就可以重新匹配我们要的字符.
这里我们用到了以下几种类型 正则表达式
字符
边界
特殊构造
回到题目 我们需要做的是将"("和")"之间的字符串匹配出来.
?<=[(] 代表 "(" 开始,但不一定是串首
?=[)] 代表 ")" 结束,但不一定是串尾
[^()]+\.[^()]+ 代表 中间含 "."的字符串, "\."是"."转义字符 "+"代表里面可以有1个"."或无数个"."
最后代码片断:
import re
re.findall("(?<=[(])[^()]+\.[^()]+(?=[)])",text)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询