匹配仅由SINGLE正斜杠分隔的文本

时间:2018-05-21 06:50:12

标签: c# .net regex

我正在尝试使用Regex.Split分割与此类似的字符串:

要归还:

实际上,忽略双重正斜杠,只担心单一正斜杠。

我知道我应该使用像/(?!/)这样的负面展望 - 但不能让它发挥作用。

这不是此Similar Question的副本,因为如果您通过Regex.Split运行该正则表达式,则不会提供所需的结果。

3 个答案:

答案 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);        
}

输出:

enter image description here

样本:

dotNetFiddle