正则表达式Python跟踪b

2024-10-04 07:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似这样的字符串:

opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name

我需要捕获所有具有“Input”的单词并从路径中删除它们。 所以我的最后一串是:

opt/custom/building/address/Name

我试过这样的方法,但没用

x = "opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name"
re.sub(r'Input/', r'/' , x.rstrip())

它给了我

opt/custom/building/Building/address/BuildingUnderwriting/Name

“BuildingInput”的“Building”和“BuildingUnderwritingInput”的“BuildingUnderwriting”保留在这里。我想把“BuildingInput”和“BuildingUnderwritingInput”这个词删掉。有什么帮助吗?或者,如果有人能告诉我如何从“Input”的出现追溯到“/”的第一次出现,这样我就可以匹配整个单词“buildingput”和“buildingunderwritingput”


Tags: 方法字符串name路径reinputaddresscustom
3条回答

删除0个或多个不是斜杠([^/]*)的字符,直到出现Input后跟斜杠的点之后:

import re
x = "opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name"
print(re.sub(r'[^/]*Input/', r'' , x.rstrip()))

如果路径的最后一个元素也可能包含Input字(不带尾随斜杠),则可以改用此选项:

x = "address/BuildingUnderwritingInput"
print(re.sub(r'[^/]*Input(/|$)', r'' , x.rstrip()))

这里/或字符串的结尾($)在Input之后匹配。但是,如果最后一个单词匹配,就会留下一个斜杠。如果这是一个问题,您可以分别删除它:

x = "address/BuildingUnderwritingInput"
x = re.sub(r'[^/]*Input(/|$)', r'' , x.rstrip())
print(re.sub(r'/$', r'' , x))

使用此正则表达式删除以斜杠(/)内的输入结尾的所有单词:

(/)[^/]+Input(?=/)

对于您的情况:

x = "opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name"
re.sub(r'(/)[^/]+Input(?=/)', r'' , x.rstrip())

你可以在这里测试:Refiddle Demo

当前只搜索和替换Input/,必须搜索整个单词,例如使用以下正则表达式:

re.sub(r'/\w*Input/', r'/' , x.rstrip())

相关问题 更多 >