如何使用正则表达式从单个字符串中提取字符串列表?

时间:2013-12-22 15:29:27

标签: python regex string list text-mining

我有一个长字符串,实际上是一组概念。我想挖掘字符串并创建一个概念列表。

字符串以:

开头

Abduction and retroduction Action research: a case study Analysis of variance (ANOVA) Attitudes Autobiography see Biographical method...

该列表包含字典条目。在绝大多数情况下,大写字母标志着新进入的开始。我想列出条目。

我试过了re.findall(r"([A-Z].+?)\s[A-Z]")。但它过滤掉了每一秒的条目。而不是[“绑架和重新引入”,“行动研究:案例研究”,“方差分析(ANOVA)”],我得到:[“绑架和重新引入”,“方差分析(ANOVA)”]

1 个答案:

答案 0 :(得分:1)

默认情况下,您可以有重叠的结果,这就是为什么跳过所有第二个连续条目的原因(因为您匹配了他的第一个字母)。避免此问题的一种方法是使用前瞻断言(?=..)来匹配第一个字母,这意味着“后跟”(前瞻只是一个检查并且不匹配)

re.findall(r"(\b[A-Z].+?)(?=\s[A-Z]|\s*$)")