正则表达式选择* .aspx直到与a-z不同

时间:2016-05-12 18:02:58

标签: c# regex

我有类似这样的字符串:

string s = "Q.ROOT_PATH + 'pgs/ChangePassword.aspx?a=5'";

我想在.aspx之前获取单词,直到找到a-z的不同字符,结果:

"ChangePassword.aspx"

My Regex:

[a-z](.aspx)

我还需要做什么?

1 个答案:

答案 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);

你可以see this approach here

通过正则表达式

您可以通过前瞻来完成此操作,该前瞻将使用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)");

你可以see a working example here