使用正则表达式在/和\之间获取字符串

时间:2018-03-18 07:19:34

标签: c# regex c#-4.0

请考虑这个字符串:

http://tempuri.org/IService1/GetData\

我想使用正则表达式获取GetData。我用这段代码测试它:

Regex regex = new Regex("\\/\\w*\\");

但是我收到了这个错误:

  

System.ArgumentException:'parsing“/ \ w * \” - 在模式结束时非法\。'

然后我测试了这段代码:

Regex regex = new Regex(@"\/\w*\\");

但它不起作用且无法识别任何匹配。

热门我可以使用正则表达式识别上面字符串中的GetData吗?

由于

1 个答案:

答案 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*)\\\\$")。最后那四个斜线就是杀了我。