首页 > 解决方案 > 你会如何告诉你的正则表达式在其他模式表达的第一个匹配之前解释一些单词?

问题描述

这是我可以通过 ocr 检索的文本的一部分(实际上它要长得多,我必须解析数千个这样的文本):

text= """avisd'impot2019e\n\n%ai%%a%%aimpotsurlesrevenus\ndel'annee2018\n\nretrouvezcetaviseieejae%abeeleli}jen%espubliques\nsurimpots.gouv.frsaidromorantin\npourvosdemarches,;uur\n\n\n\nilsuffitdefournirune\nphotocopie,verifiablesur\nimpots.gouv.fr/verifavis\n\nvousetesnonimposable8\n\nal'impotsurlerevenu.aceptsiganesboite257\n26ruedeplainnne\n44800romorantinlannnthenay\n\n\n\n\n\n\n\n\n\n\nvosreferences\npouraccederavotreespaceparticulier\nnumerofiscal(c):3014347468444\n\nvotresituation\nmontantdevotreimpot\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nnd'accesenligne:voirvotredeclaration\nrevenufiscaldereference\n:760\nveuillezprendrenotedelareferencedel'avis:1941a17577893\nadressed'impositionau01/01/2019:\n\nace """

我对以下部分中包含的数字感兴趣:

  1. veuillezprendrenotedelareferencedel'avis:1941a17577893\n
  2. revenufiscaldereference\n:760\n

我想用正则表达式说:

  1. 获取“note”和“avis”之后的第 13 个字母数字。我试过但失败了

    pattern = re.compile('(?note). (?=avis). [a-z0-9]{13})[^\w]')

  2. 抓住后面的所有数字,nufiscaldereference无论是否有\n

你会怎么做?

标签: python-3.xregex

解决方案


这会做到:

note.*?avis:([a-z\d]{13})\W|nufiscaldereference\D+(\d+)

并且您的数据将分别位于捕获组 1 和 2 中。

https://regex101.com/r/LH9kKv/1


推荐阅读