正则表达式:如何删除相同字符串的重复?

时间:2012-07-31 07:33:22

标签: regex python-2.7

我正试图找到自该日期起的那一年。 日期格式为

"Nov.-Dec. 2010"
"Aug. 30 2011-Sept. 3 2011"
"21-21 Oct. 1997"


my regular expression is
q = re.compile("\d\d\d\d")
a = q.findall(date)

显然在列表中它有两个项目,如"Aug. 30 2011-Sept. 3 2011"

["2011","2011"]

我不想重复,我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以在正则表达式中使用反向引用(请参阅语法here):

(\d{4}).*\1

或者您可以使用当前的正则表达式并将此逻辑放在python代码中:

if a[0] == a[1]:
    ...

答案 1 :(得分:0)

使用以下功能:

def getUnique(date): 
  q = re.compile("\d\d\d\d") 
  output = [] 
  for x in q.findall(date): 
     if x not in output: 
         output.append(x) 
  return output 

虽然是O(n ^ 2),但是对于输入列表的每个元素重复使用not in

请参阅How to remove duplicates from Python list and keep order?