【问题标题】:Splitting of a string using Regex使用正则表达式拆分字符串
【发布时间】:2017-02-23 20:30:36
【问题描述】:

我有以下格式的字符串:

string test = "test.BO.ID";

我的目标是在第一个点之后的字符串的那部分字符串。 所以理想情况下,我期望输出为 "BO.ID"。

这是我尝试过的:

// Checking for the first occurence and take whatever comes after dot
var output = Regex.Match(test, @"^(?=.).*?"); 

我得到的输出是空的。

我需要对 Regex 进行哪些修改?

【问题讨论】:

    标签: c# asp.net .net regex c#-4.0


    【解决方案1】:

    您得到一个空输出,因为您拥有的模式可以匹配字符串开头的空字符串,这已经足够了,因为 .*? 是一个惰性子模式,. 匹配任何字符。

    使用(值将在Match.Groups[1].Value

    \.(.*)
    

    或(通过前瞻,将字符串作为Match.Value

    (?<=\.).*
    

    查看regex demoC# online demo

    非正则表达式方法可以使用 String#Splitcount 参数 (demo):

    var s = "test.BO.ID";
    var res = s.Split(new[] {"."}, 2, StringSplitOptions.None);
    if (res.GetLength(0) > 1)
        Console.WriteLine(res[1]);
    

    【讨论】:

      【解决方案2】:

      如果您只想要第一个点之后的部分,则根本不需要正则表达式:

      x.Substring(x.IndexOf('.'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        相关资源
        最近更新 更多