我有一个像这样的字符串:
opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name
我需要抓住所有输入'输入'并从路径中删除它们。 所以我的最后一个字符串是:
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
" Building" " BuildingInput"和#34; BuildingUnderwriting" " BuildingUnderwritingInput"保留在这里。我想要整个单词' BuildingInput"和#34; BuildingUnderwritingInput"被省略。有帮助吗?或者,如果有人能告诉我如何从"输入"的发生回溯。第一次出现" /"所以我可以匹配整个单词" BuildingInput"和#34; BuildingUnderwritingInput"
答案 0 :(得分:1)
使用此正则表达式删除以斜杠(/)中的输入结尾的所有单词:
(/)[^/]+Input(?=/)
对于你的情况:
x = "opt/custom/building/BuildingInput/address/BuildingUnderwritingInput/Name"
re.sub(r'(/)[^/]+Input(?=/)', r'' , x.rstrip())
您可以在此处测试:Refiddle Demo
答案 1 :(得分:0)
目前您只搜索并替换Input/
,您必须搜索整个单词,例如使用此正则表达式:
re.sub(r'/\w*Input/', r'/' , x.rstrip())
答案 2 :(得分:0)
删除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))