用python 中的findall如何提取括号中字符串的内容

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

  这里我们用了一个 Python的正则模块 re.findall来做字符串匹配解决这个问题.

看下正则的流程

    首先说下什么是正则表达式, 正则其实就是对字符串特征的抽象!!!

    当我们的字符串特性变化了,我们不需要大幅度修改程序,只要修改该特征结构就可以重新匹配我们要的字符.

这里我们用到了以下几种类型 正则表达式 


    字符

    边界

    特殊构造

回到题目  我们需要做的是将"("和")"之间的字符串匹配出来.

 ?<=[(]            代表 "(" 开始,但不一定是串首

 ?=[)]               代表 ")" 结束,但不一定是串尾

[^()]+\.[^()]+  代表 中间含 "."的字符串, "\."是"."转义字符  "+"代表里面可以有1个"."或无数个"."


    最后代码片断:

import re

re.findall("(?<=[(])[^()]+\.[^()]+(?=[)])",text)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-04
re.findall("(?<=[(])[^()]+\.[^()]+(?=[)])",text)
text表示上面的文本本回答被提问者采纳
第2个回答  2018-03-27

用这个正则:re.findall("\(.*?\)",s)

相似回答