【发布时间】:2018-04-02 22:36:20
【问题描述】:
我有以下测试,我想提取 HAB: 之后的所有代码,它们前面必须有 REST,但中间可以有其他词:
REST gfdjj REST HAB:75RF-3729-70D-01 CLUE HAB:234-543 REST tt HAB:75RF-3729-70D-02 CLUE ytr HAB:34829-5467 REST HAB:75RF-3729-70D-03 REST REST REST HAB:54783-04 REST HA:837483 REST dfhjdf REST 347845-34 REST rehs HAB:45923 REST HAB:REST sdfdgdsd HAB:456734
https://regex101.com/r/4inYr4/3
我试过(REST.*?) *(HAB:) (.*?)( |$),但它也返回了许多冗余的REST,
(REST) *(HAB:) (.*?)( |$) 但它不返回第二个代码,
和(REST(?!.*REST).*?) *(HAB:) (.*?)( |$),但它只返回最后一个。
我需要某种条件正则表达式,它只允许 REST 和 HAB: 之间出现除 REST 之外的其他词,这是我所期望的最后一个要做?
编辑:
我要提取:
REST 75RF-3729-70D-01
REST 75RF-3729-70D-02
REST 75RF-3729-70D-03
REST 54783-04
REST 45923
编辑 2:
我需要 REST 部分,我更新了问题并添加了一些 CLUE 以强调我需要 REST
我使用 Python 2.7
编辑 3:
我还需要在以下位置找到 REST 456734:
REST HAB:REST sdfdgdsd HAB:456734
【问题讨论】:
-
你想从你的样本中匹配什么?
-
在您的 regex101 测试中,您的测试字符串不包括代码上的 -01 到 -04 后缀。当我穿上这些并使用您的第二个正则表达式时,它会返回所有 3 个代码 75RF-3729-70D-01、75RF-3729-70D-03 和 54783-04
-
您需要
REST部分吗?另外,您使用的是什么工具/语言? -
但是45923后面没有HAB。
标签: python regex python-2.7