python-3.x - 你会如何告诉你的正则表达式在其他模式表达的第一个匹配之前解释一些单词?
问题描述
这是我可以通过 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 """
我对以下部分中包含的数字感兴趣:
veuillezprendrenotedelareferencedel'avis:1941a17577893\n
revenufiscaldereference\n:760\n
我想用正则表达式说:
获取“note”和“avis”之后的第 13 个字母数字。我试过但失败了
pattern = re.compile('(?note). (?=avis). [a-z0-9]{13})[^\w]')
抓住后面的所有数字,
nufiscaldereference
无论是否有\n
。
你会怎么做?
解决方案
这会做到:
note.*?avis:([a-z\d]{13})\W|nufiscaldereference\D+(\d+)
并且您的数据将分别位于捕获组 1 和 2 中。
推荐阅读
- flutter - 我如何在颤动中将 12 小时时间字符串转换为 24 小时?
- python - 使用 if 条件创建新的 pandas 数据框
- javascript - 尝试导入错误:“configureStore”未从“./app/store”导出
- javascript - 如何在数组 Mongodb 中拆分 2 个对象
- php - 如何修复 MySQL 错误:您的 SQL 语法有错误
- sequelize.js - 嵌套包含未显示第二个包含的数据
- pine-script - 松脚本趋势线获取当前价格问题
- swift - 是否有 SwiftUI“拖入”手势?
- javascript - 有没有办法使用 quick.db 制作 discord.js 日志系统
- javascript - 如何使用 useLocation 路由到新布局?