请考虑这个字符串:
http://tempuri.org/IService1/GetData\
我想使用正则表达式获取GetData
。我用这段代码测试它:
Regex regex = new Regex("\\/\\w*\\");
但是我收到了这个错误:
System.ArgumentException:'parsing“/ \ w * \” - 在模式结束时非法\。'
然后我测试了这段代码:
Regex regex = new Regex(@"\/\w*\\");
但它不起作用且无法识别任何匹配。
热门我可以使用正则表达式识别上面字符串中的GetData
吗?
由于
答案 0 :(得分:1)
var input = @"http://tempuri.org/IService1/GetData\";
Regex regex = new Regex(@"/(\w*)\\");
var match = regex.Match(input);
if (match.Success)
{
// data = "GetData"
var data = match.Groups[1].Value;
}
反斜杠转义为正则表达式Regex("\\/\\w*\\")
后, \/\w*\
。由于尾部反斜杠,此表达式不正确。这会导致Illegal \ at end of pattern
错误。
有这么多的反斜杠应该在RE中转义,很有可能犯错误。这就是为什么在构建正则表达式时使用verbatim strings会更好的原因。与普通C#字符串相同的正则表达式应构建为new Regex("/(\\w*)\\\\$")
。最后那四个斜线就是杀了我。