我正在寻找有关如何创建正则表达式的帮助,该表达式从字符串中提取子字符串,如下所示:
test123 #AMMA-TestFileName File's.xml
为...
AMMA-TEstFileName档案
基本上,删除第一个“#”及其前面的所有内容。此外,删除“.xml”文件扩展名。
任何帮助都表示赞赏,因为我刚开始使用正则表达式。这将用于支持.NET正则表达式API的Nintex工作流操作。
答案 0 :(得分:3)
将模式锚定在字符串的末尾:
/#(.+)\.xml$/
答案 1 :(得分:1)
您要查找的字符串将位于第一组中。
/#(.+?)\.xml$/
在C#中
String extractFilename(String s)
{
Regex r = new Regex(@"#(?<filename>.+?)\.xml$", RegexOptions.Compiled);
return r.Match(s).Result("${filename}");
}
编辑:删除转义#,为扩展添加了行尾限定符,并添加了C#示例
答案 2 :(得分:1)
如果你想照顾xml以外的扩展名
/#(.+)\..*$/
答案 3 :(得分:0)
编辑:显然这不是正则表达式,但它比正则表达式更快,所以我把它包括在内。
Path.GetFileNameWithoutExtension(s.Substring(s.IndexOf('#') + 1));