我正在尝试使用Regex.Split
分割与此类似的字符串:
要归还:
实际上,忽略双重正斜杠,只担心单一正斜杠。
我知道我应该使用像/(?!/)
这样的负面展望 - 但不能让它发挥作用。
这不是此Similar Question的副本,因为如果您通过Regex.Split运行该正则表达式,则不会提供所需的结果。
答案 0 :(得分:4)
这个怎么样:(?<!/)/(?!/)
打破它:
(?<!/)
:/
字符/
:匹配单个/
字符(?!/)
:/
个字符的负面预测总而言之,我们匹配的/
字符在其之前和之后都没有/
。
使用示例:
string text = "https://www.linkedin.com/in/someone";
string[] tokens = Regex.Split(text, "(?<!/)/(?!/)");
foreach (var token in tokens)
{
Console.WriteLine($"Token: {token}");
}
输出:
令牌:https://www.linkedin.com
令牌:在 令牌:某人
答案 1 :(得分:0)
您也可以使用以下代码执行此操作:
string pattern = @"([^\/]+(\/{2,}[^\/]+)?)";
string input = @"https://www.linkedin.com/in/someone";
foreach(Match match in Regex.Matches(input, pattern)) {
Console.WriteLine(match);
}
输出:
https://www.linkedin.com in someone
答案 2 :(得分:0)
正如@Panagiotis Kanavos在上面的评论部分中所提到的,为什么在使用Uri Class
时会让事情变得复杂:
提供统一资源标识符(URI)的对象表示,并可轻松访问URI的各个部分。
public static void Main()
{
Uri myUri = new Uri("https://www.linkedin.com/in/someone");
string host = myUri.Scheme + Uri.SchemeDelimiter + myUri.Host;
Console.WriteLine(host);
}
输出:
样本: