Sie finden "einen Buchstaben, der angezeigt wird, zweimal die" in einem string

Ich versuche, mich zu fangen, wenn Sie einen Buchstaben, der angezeigt wird, zweimal in einem string mittels RegEx (oder vielleicht gibt es einige bessere Möglichkeiten?), zum Beispiel mein string ist:

ugknbfddgicrmopn

Die Ausgabe wäre:

dd

Jedoch, ich habe versucht, so etwas wie:

re.findall('[a-z]{2}', 'ugknbfddgicrmopn')

aber in diesem Fall, es gibt:

['ug', 'kn', 'bf', 'dd', 'gi', 'cr', 'mo', 'pn']   # the except output is `['dd']`

Ich habe auch einen Weg, um das erwarten Ausgabe:

>>> l = []
>>> tmp = None
>>> for i in 'ugknbfddgicrmopn':
...     if tmp != i:
...         tmp = i
...         continue
...     l.append(i*2)
...     
... 
>>> l
['dd']
>>> 

Aber das ist zu Komplex...


Wenn es 'abbbcppq', dann nur zu fangen:

abbbcppq
 ^^  ^^

Also die Ausgabe ist:

['bb', 'pp']

Dann, wenn es 'abbbbcppq', fangen bb zweimal:

abbbbcppq
 ^^^^ ^^

Also die Ausgabe ist:

['bb', 'bb', 'pp']
  • Sie können Rückverweis, ([a-z])\1
  • Sie scheinen zu erwarten-aber nicht erwähnen -- Kontiguität, und Sie nicht erklären, was würde Sie wollen, wie ein Ergebnis, wenn "ddd" vorhanden waren.
  • was, wenn der Brief erscheint mehr als zwei mal>?
  • was, wenn er will diejenigen finden, die erscheint, genau zwei? wie fetch dd aus fddf nicht aus fdddf
  • Sie benötigen findall für mehr als ein vorkommen. re.search('([a-z])\1', 'ugknbfddgicrmopn').group()
  • Das war eine Vermutung, die Nicht vertraut mit Python 🙁
  • Huh? Getestet auf Python 2.7 und Python 3.5, beide erhöhen AttributeError: 'NoneType' object has no attribute 'group'.
  • was wäre deine erwartete Ausgabe, wenn die Eingabe abbbbcppq
  • Sicher, fangen bb zweimal, so ist es ['bb', 'bb', 'pp'].
  • Meinst du Brief erscheint zweimal die gemeinsam oder überall in input?
  • Naja, gemeinsam in diesem Fall.
  • Ganz Ähnlich wie [python]: verwenden Sie re zu finden fortlaufend wiederholt chars

InformationsquelleAutor Kevin Guan | 2015-12-14
Schreibe einen Kommentar