Regex在末尾截断字符串

本文关键字:字符串 Regex | 更新日期: 2023-09-27 18:24:23

我有一组复杂的文件号,需要使用Regex进行如下过滤。

E/T66/2004Q/2009AA         --- remove  'AA'   ==> E/T66/2004Q/2009
E/T66/2004Q/2001 Vol1      --- remove ' Vol1' ==> E/T66/2004Q/2001
E/T66/2004Q/2001Vol1       --- remove 'Vol1'  ==> E/T66/2004Q/2001
E/T66/2004/123/3/1999 Pc3  --- remove ' pc3'  ==> E/T66/2004/123/3/1999
E/T78/2004A                --- remove 'A'     ==> E/T78/2004

到目前为止,我已经使用了这个Regex([^/D]+$)来匹配决赛"/"后的最后一部分我需要从找到非数字的地方删除到字符串末尾的字符串末尾。

提前感谢您抽出时间!

Regex在末尾截断字符串

我本以为用你想保留的东西而不是你想失去的东西来定义它更容易。

.*/'d+

以上内容将匹配所有字符,直到并包括最终的/,然后匹配任意数量的数字。当它到达第一个非数字字符时,这场比赛将停止,这是你要开始扔掉东西的地方。

样本代码:

var re = new Regex("(.*/''d+).*");
Console.WriteLine(re.Replace("E/T78/2004A", "$1"));

这适用于上述所有示例。

使用此选项删除不需要('D+'d*)$ 的项目

以下是它的工作示例:http://jsfiddle.net/BzyUL/4/

如果末尾总是有4位数字,则/(^.+'/'d'd'd'd)/将与您在所给出的所有示例中想要保留的部分相匹配。所以只需匹配模式,然后用匹配的字符串替换字符串。

/(^.+'/'d{4})/有一个短一点的版本适合你。

使用此regexp仅匹配完整路径或文件名(没有区别):

(('w+'/)*'d{4})(.*)

并将其替换为$1,如中所示

var regexp = new Regex(@"(('w+'/)*'d{4})(.*)");
string result = regexp.Replace(path, "$1"));

删除年份数字后不需要的字符。

感谢各位的反馈。我都试过了,从你身上学到了很多!我最后在这里使用了".*/''d+"选项。