我有下面的测试,我想提取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以外的其他单词介于REST和HAB:之间,我希望最后一个可以这样做?你知道吗
编辑:
我想提取:
其余75RF-3729-70D-01
其余75RF-3729-70D-02
其余75RF-3729-70D-03
其余54783-04
其余45923
编辑2:
我需要剩下的部分,我更新了问题并添加了一些线索来强调我需要休息
我使用python2.7
编辑3:
我还需要找到REST456734 in:
REST HAB: REST sdfdgdsd HAB: 456734
你想要这样的输出吗?你知道吗
你可以试试这个式样。你知道吗
Demo
你要提取的是在捕获组1,2中成对捕获的
您要求匹配从
REST
到HAB:
的文本(不包括REST
),实际上没有帮助,它不会对匹配产生太大影响,但是HAB:
之后的文本不能是REST
,因为它会阻止有效的匹配。你知道吗你可以用
参见regex demo
细节
(REST)
-第1组:一个REST
子串.*?
-除换行符以外的任何0+字符,尽可能少HAB:
-aHAB:
文字子串\s*
-0+空格(?!REST(?!\S))
-如果在当前位置的右侧紧跟着有REST
后跟空格或字符串结尾,则会导致匹配失败的负前瞻(\S+)
-第2组:任何1+非空白字符。你知道吗Python code demo:
相关问题 更多 >
编程相关推荐