/ / Python regex number pri pohľade za - python, regex

Pythonovo regexové číslo pohľadom - python, regex

Vyberám čísla v takomto formáte.

  • AB1234
  • AC1234
  • AD1234

Ako vidíš, A je vždy tam a druhý char vylučuje ", Napíšem nižšie kód na extrahovanie čísla.

re.search(r"(?<=A[^"])d*",input)

Ale vyskytla som sa chyba.

look-behind vyžaduje model s pevnou šírkou

Takže existuje nejaký vhodný spôsob, ako získať čísla? Teraz viem, ako dvakrát vyhľadávať, aby ste ich získali.Vďaka vopred.

Poznámka A je vzor, ​​v skutočnosti A je svet v dlhom reťazci.

odpovede:

3 pre odpoveď č. 1

Regex vo vašom príklade funguje, takže sa domnievam, že váš skutočný vzor má premennú šírku znakov (*, +, atď). Bohužiaľ, regex look behinds ich nepodporuje. Čo môžem navrhnúť ako alternatívu, je použiť skupinu zachytenia a extrahovať zodpovedajúci reťazec -

m = re.search(r"AD+(d+)", s)
if m:
r = m.group(1)

podrobnosti

A      # your word
D+    # anything that is not a digit
(      # capture group
d+    # 1 or more digits
)

Ak sa chcete postarať o dvojité úvodzovky, môžete urobiť miernu úpravu regulárneho výrazu tým, že zahrniete triedu znakov -

r"A[^d"]+(d+)"

0 pre odpoveď č. 2

Tye namiesto toho používa tento regex:

re.search(r"(?=A[^"]d*)d*",input)