【发布时间】:2009-07-16 03:36:51
【问题描述】:
我正在寻求有关如何创建正则表达式的帮助,该表达式从如下所示的字符串中提取子字符串:
test123 #AMMA-TestFileName 文件的.xml
到...
AMMA-TEstFileName 文件的
基本上,删除第一个“#”和它之前的所有内容。此外,删除“.xml”文件扩展名。
感谢任何帮助,因为我刚刚开始使用正则表达式。这将用于支持 .NET 正则表达式 API 的 Nintex 工作流操作。
【问题讨论】:
我正在寻求有关如何创建正则表达式的帮助,该表达式从如下所示的字符串中提取子字符串:
test123 #AMMA-TestFileName 文件的.xml
到...
AMMA-TEstFileName 文件的
基本上,删除第一个“#”和它之前的所有内容。此外,删除“.xml”文件扩展名。
感谢任何帮助,因为我刚刚开始使用正则表达式。这将用于支持 .NET 正则表达式 API 的 Nintex 工作流操作。
【问题讨论】:
将模式锚定在字符串的末尾:
/#(.+)\.xml$/
【讨论】:
您要查找的字符串将在第一组中。
/#(.+?)\.xml$/
在 C# 中
String extractFilename(String s)
{
Regex r = new Regex(@"#(?<filename>.+?)\.xml$", RegexOptions.Compiled);
return r.Match(s).Result("${filename}");
}
编辑:删除转义 #,添加行尾限定符以进行扩展,并添加 C# 示例
【讨论】:
如果你想处理 xml 以外的扩展
/#(.+)\..*$/
【讨论】:
编辑:显然这不是正则表达式,但它比正则表达式更快,所以我将它包括在内。
Path.GetFileNameWithoutExtension(s.Substring(s.IndexOf('#') + 1));
【讨论】: