用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
展开
 我来答
小柯师傅
推荐于2016-09-08 · TA获得超过919个赞
知道小有建树答主
回答量:202
采纳率:100%
帮助的人:278万
展开全部

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

看下正则的流程

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

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

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


  • 字符

  • 边界

  • 特殊构造

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

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

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

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


  • 最后代码片断:

import re

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

albumin
2015-04-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2384万
展开全部
re.findall("(?<=[(])[^()]+\.[^()]+(?=[)])",text)
text表示上面的文本
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魏雷嘲cx
2018-03-27
知道答主
回答量:23
采纳率:0%
帮助的人:3.6万
展开全部

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式