找到我的模式子串的正则表达式

时间:2017-08-13 07:32:19

标签: python regex string

我有一个文本,我想提取两个"& HT;"之间的所有内容。这是我的文字的一部分:

&安培; HT;几年前,当南方贫困法律中心的莫里斯·迪斯发起了一场写信活动,以阻止书店连锁店和经销商放弃威廉·皮尔斯的小说“特纳日记”,#'许多美国人认为KlanWatch的创始人对少数白人至上主义者的暴力行为反应过度。 &安培; HT;现在,随着越来越多的白人男性瞄准和杀害少数群体成员,Dees'禁止禁书活动_虽然对大多数美国人来说仍然是不合理的,但我自己也包括在第一修正案的理由中 - 并不像以前那样令人不快。 &安培; HT;原因是“特纳日记”''作为Tim McVeigh和Ben Smith以及L.A.日营嫌疑人Buford Furrow等杀手的圣经。

首先我写了re.findall("&HT;(.*)&HT;",text,re.S)但这返回1个字符串,其中包含第一个和HT之间的文本;持续& HT;。我意识到这个问题是由于这些部分重叠而且re.findall用于非重叠匹配的事实引起的。 然后我使用了re.findall("?=T;(.*)&H)")但是在这个示例文本中它返回了两个这样的子串:

几年前,当南方贫困法律中心的莫里斯·迪斯发起了一封写信活动,劝阻书店连锁店和经销商放弃威廉·皮尔斯的小说“特纳日记”,'&# 39;许多美国人认为KlanWatch的创始人对少数白人至上主义者的暴力行为反应过度。 &安培; HT;现在,随着越来越多的白人男性瞄准和杀害少数群体成员,Dees'禁止禁书活动_虽然对大多数美国人来说仍然不合理,但我自己也包含在第一修正案的理由中_并不像以前那样令人不快。

现在,随着越来越多的白人男性瞄准和杀害少数群体成员,Dees'禁止禁书活动_虽然对大多数美国人来说仍然不合理,但我自己也包含在第一修正案的理由中_并不像以前那样令人不快。

我怎样才能将文本的每一部分放在两个"& HT;"之间。正常?

2 个答案:

答案 0 :(得分:1)

您可以在&HT;(.*?)(?=&HT;|$)中使用一个正则表达式re.find

Demo

答案 1 :(得分:0)

您可以使用&HT;([^&]+)查看sample