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

如何使用Regex.Split按单斜杠分割字符串,忽略双斜杠?

解决Regex.Split忽略双斜杠、仅分割单个正斜杠的问题

我太懂你这个需求了——就是想把像https://www.linkedin.com/in/someone这样的URL,按单个正斜杠分割,但要跳过开头的双斜杠,最终得到https://www.linkedin.com、in、someone这三部分对吧?之前用负向前瞻没成功,大概率是正则的断言方向搞反了,我来给你捋清楚。

问题根源:为什么直接用/分割不行?

如果直接用Regex.Split(url, "/"),会把https://拆成https:、空字符串、www.linkedin.com,完全不符合预期——因为双斜杠里的第二个/也被当成了分割符。我们需要的是:只分割那些前面没有紧跟着另一个/的单个/。

正确的正则表达式:负向后瞻断言

你需要用的是负向后瞻而不是负向前瞻,对应的正则是:(?<!/)\/

解释一下这个正则的逻辑:

  • (?<!/):这是负向后瞻断言,意思是“当前位置的前面不能是/”
  • \/:匹配单个正斜杠(转义是因为在正则里/是特殊字符)

这样一来,双斜杠里的第二个/因为前面有一个/,会被断言排除,不会被当成分割符;而/in/里的两个/前面都没有紧跟着/,就会被正常分割。

代码示例(以C#和JavaScript为例)

C# 实现

string url = "https://www.linkedin.com/in/someone";
string[] result = Regex.Split(url, @"(?<!/)\/");
// 输出结果:["https://www.linkedin.com", "in", "someone"]

JavaScript 实现

const url = "https://www.linkedin.com/in/someone";
const result = url.split(/(?<!\/)\//);
// 输出结果:["https://www.linkedin.com", "in", "someone"]

为什么之前的/(?!/)不行?

你之前尝试的负向前瞻/(?!/),逻辑是“匹配后面没有/的/”,但这会把https://里的第二个/也匹配到(因为它后面是www而不是/),导致分割出空字符串,完全达不到你想要的效果。所以方向一定要搞对:我们要排除的是前面有/的/,而不是后面没有/的/。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:10