我正在尝试编写一个正则表达式,它将删除特定文件夹名称后的其余路径。
如果输入为:
/Repository/Framework/PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces/IDemoReader.cs
输出应为:
/Repository/Framework/PITA/branches/ChangePack-6a7B6
有些限制:
ChangePack-
将跟随更改包ID,它是任何顺序的数字或字母a-z或A-Z的混合。更改包ID的长度没有限制。
ChangePack-
是一个常量。它将永远存在。
ChangePack之前的文本也可以更改。喜欢它也可以是:
/Repository/Demo1/Demo2/4.3//PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces
我的正则表达很糟糕。到目前为止我想出的是:
^(.*?)\-6a7B6
我需要使这个通用。 任何帮助将不胜感激。
答案 0 :(得分:1)
在正则表达式下可以做到这一点。
^(.*?ChangePack-[\w]+)
输入:
/Repository/Framework/PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces/IDemoReader.cs
/Repository/Demo1/Demo2/4.3//PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces
输出:
/Repository/Framework/PITA/branches/ChangePack-6a7B6
/Repository/Demo1/Demo2/4.3//PITA/branches/ChangePack-6a7B6
查看实时regex demo here。
答案 1 :(得分:1)
答案 2 :(得分:0)
您是否总是拥有' / Repository / Framework / PITA / branches /'一开始?如果是这样,这将解决问题:
/Repository/Framework/PITA/branches/\w+-\w*
答案 3 :(得分:0)
您可以使用split
和join
函数代替正则表达式。示例python:
path = "/a/b/c/d/e"
folders = path.split("/")
newpath = "/".join(folders[:3]) #trims off everything from the third folder over
print(newpath) #prints "/a/b"
如果您真的想要正则表达式,请尝试^.*\/folder\/
之类的内容,其中folder
是您要匹配的目录的名称。