[英]Regex to select *.aspx until something different from a-z
我有类似这样的字符串:
string s = "Q.ROOT_PATH + 'pgs/ChangePassword.aspx?a=5'";
我想获得.aspx
之前的单词,直到找到与az不同的字符,结果:
"ChangePassword.aspx"
我的正则表达式:
[a-z](.aspx)
我还需要做什么?
尽管您当然可以使用正则表达式来处理此问题,但是您可以考虑.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()
方法通过先行匹配将匹配.aspx
之前的一个或多个字母[a-zA-Z]+
的字符串来完成此操作:
// 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)");
您可以在此处看到一个有效的示例 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.