我有类似这样的字符串:
string s = "Q.ROOT_PATH + 'pgs/ChangePassword.aspx?a=5'";
我想在.aspx
之前获取单词,直到找到a-z的不同字符,结果:
"ChangePassword.aspx"
My Regex:
[a-z](.aspx)
我还需要做什么?
答案 0 :(得分:1)
虽然您当然可以使用正则表达式来处理这个问题,但您可能会考虑.NET中的一些内置函数可以为您处理这个问题。我将提供两个如何解决此问题的示例(使用和不使用正则表达式)。
使用Path.GetFileNameWithoutExtension()
方法
System.IO
命名空间实际上公开了一个名为GetFileNameWithoutExtension()
的方法,它将为您处理这个确切的操作:
// This will find the file mentioned in the path and return it without
// an extension ("pgs/ChangePassword.aspx?a=5" > "ChangePassword")
var fileName = Path.GetFileNameWithoutExtension(input);
通过正则表达式
您可以通过前瞻来完成此操作,该前瞻将使用Regex.Match()
方法匹配[a-zA-Z]+
之前的一个或多个字母.aspx
的字符串:
// This will match any set of alphabetical characters that appear before
// an '.aspx' ("pgs/ChangePassword.aspx?a=5" > "ChangePassword")
var fileName = Regex.Match(input,@"[a-zA-Z]+(?=\.aspx)");