2012-04-21 69 views
4

我试图使用python re来查找一组重复特定次数的相同字母或数字。 (.)适用于识别将要重复的内容,但我无法找到如何避免重复不同的字符。这里是我有:使用正则表达式匹配相同字符的确切次数

re.search(r'(.){n}', str) 

因此,例如,它会从99997如果n = 4匹配9999,但如果n = 3
感谢

+0

这个网站是你的朋友:http://www.txt2re.com/index-php.php3。 – 2012-04-21 04:57:59

+2

你能澄清你想*匹配什么,你*不想匹配什么?我不明白“我不知道如何防止它重复不同的人物”是应该的。 – 2012-04-21 05:00:46

+0

我想匹配任何重复n次的东西,所以如果9次重复n次我想要9999,或者如果T重复n次我想TTTT,但是我不想'9897如果我说。{4} – cah 2012-04-21 05:03:48

回答

4

如何

(?:^|(?<=(.)))(?!\1)(.)\2{n-1}(?!\2) 

这将:

  • (?:^|(?<=(.))):确保:
    • ^:无论我们是在字符串的开头
    • (?<=(.)) :要么我们不在字符串的开头;然后,捕捉人物在比赛之前,并保存到\1
  • (?!\1)(.):比赛是不是\1任何字符,并保存到\2
  • \2{n-1}:比赛\2 N-1次
  • (?!\2):请当然\2不能匹配期待

n-1是只有符号;显然你想用这个替换n-1的实际值,而不是8-1或某物)。

重要编辑:正则表达式((.)\1{n-1}(?!\1))不起作用,因为它没有考虑到的字符匹配\1比赛背后的早期版本。上面的正则表达式解决了这个问题。

+0

谢谢,看起来像它的工作,我会检查你,因为你是第一次,但它让我等待4分钟由于某种原因或其他 – cah 2012-04-21 05:07:12

+1

请重新阅读答案;我的答案的以前版本不起作用。上面应该现在工作。 – 2012-04-21 05:18:40

+2

感谢顽强的持久! – cah 2012-04-21 05:32:19