You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取指定字符串中/与\之间的GetData?

解决正则提取GetData的问题

咱们一步步来排查和解决你的问题:

首先说说你第一次写的正则"\\/\\w*\\"为什么报错——在C#的普通字符串里,\是转义字符,所以你最后那个\其实没有被正确转义成正则能识别的字面量\。最终传递给Regex的模式是/\w*\,末尾的\属于非法的未转义字符,自然就抛出了ArgumentException。

然后是你第二次尝试的@"/\w*\\",这个正则的逻辑是匹配/ + 任意数量单词字符 + \,但你的目标字符串结构是.../IService1/GetData\,这里的/有两个,而\w不包含/,所以这个正则会在第一个/后面匹配到IService1就停下来,后面遇到下一个/就不满足\w的匹配规则了,自然找不到你要的GetData。

正确的正则写法

我们需要精准匹配最后一个/之后、末尾\之前的内容,推荐两种写法:

写法1:针对单词字符的精准匹配

如果确定目标内容只有字母数字下划线(也就是\w覆盖的范围),可以用这个:

Regex regex = new Regex(@"\/(\w+)\\$");
  • @符号让我们不用额外转义字符串里的\,写正则更省心
  • \/匹配字面量/
  • (\w+)用捕获组捕获一个或多个单词字符(用+而不是*,避免匹配空内容)
  • \\匹配末尾的\
  • $锚定到字符串结尾,确保我们抓的是最后一段内容

写法2:更通用的匹配(支持非单词字符)

如果以后目标内容可能包含\w以外的字符,比如Get-Data这种带连字符的,就用这个:

Regex regex = new Regex(@"\/([^\\]+)\\$");
  • [^\\]+表示匹配除了\之外的任意一个或多个字符,适用性更广

完整代码示例

string input = @"http://tempuri.org/IService1/GetData\";
Regex regex = new Regex(@"\/(\w+)\\$");
Match match = regex.Match(input);
if (match.Success)
{
    string target = match.Groups[1].Value;
    Console.WriteLine(target); // 输出:GetData
}

内容的提问来源于stack exchange,提问作者DooDoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:31:31