Regex 需要正则表达式去除路径的剩余部分
我正在尝试编写一个正则表达式,它将在一个特定的文件夹名之后去掉路径的其余部分 如果输入为:Regex 需要正则表达式去除路径的剩余部分,regex,Regex,我正在尝试编写一个正则表达式,它将在一个特定的文件夹名之后去掉路径的其余部分 如果输入为: /Repository/Framework/PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces/IDemoReader.cs 输出应为: /Repository/Framework/PITA/branches/ChangePack-6a7B6 一些限制条件: ChangePack-后面是ChangePack id,它是数字或字母a-z
/Repository/Framework/PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces/IDemoReader.cs
输出应为:
/Repository/Framework/PITA/branches/ChangePack-6a7B6
一些限制条件:
ChangePack-
后面是ChangePack id,它是数字或字母a-z或a-z的任意顺序组合。更改包id的长度没有限制。
ChangePack-
是一个常量。它将永远在那里
而ChangePack之前的文本也可以更改。它也可以是:
/Repository/Demo1/Demo2/4.3//PITA/branches/ChangePack-6a7B6/core/src/Pita.x86.Interfaces
我的regex-fu不好。到目前为止,我想到的是:
^(.*?)\-6a7B6
我需要让这个通用。
任何帮助都将不胜感激。在开始时,您会一直使用“/Repository/Framework/PITA/branchs/”吗?如果是这样,这将实现以下目的:
/Repository/Framework/PITA/branches/\w+-\w*
您可以使用
split
和join
函数代替regex。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
是您要匹配的目录名。下面的正则表达式可以实现此目的
^(.*?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
看看现场直播
尝试此操作。而不是替换抓取匹配的$1
或\1
。请参阅演示
否。它可以更改。可以从SVN中的任何点签出代码以创建更改包。然后路径将更改。我将在windows批处理文件环境中工作。所以拆分和合并可能有点困难。但更大的问题是,它不会永远是第三个文件夹。它的位置会发生变化。如果您确实想要正则表达式,请尝试类似于
^.*\/folder\/
的方法。它将从一开始就匹配到文件夹的第一个实例
如果您的输入是/Repository/Framework/ChangePack-7/branchs/ChangePack-6a7B6/hh1
?@NotAgain这也将接受/Repository/Framework/ChangePack-7/branchs/ChangePack-6a_7B6
^(.*?ChangePack-[a-zA-Z0-9]+)