我有以下格式的字符串:
string test = "test.BO.ID";
我的目标是字符串是字符串的一部分,无论是在第一个点之后。 理想情况下,我希望输出为 " BO.ID"。
以下是我的尝试:
// Checking for the first occurence and take whatever comes after dot
var output = Regex.Match(test, @"^(?=.).*?");
我得到的输出是空的。
我需要对Regex进行哪些修改?
答案 0 :(得分:4)
您得到一个空输出,因为您拥有的模式可以匹配字符串开头的空字符串,这就足够了,因为.*?
是一个惰性子模式,.
匹配任何char。< / p>
使用(值将在Match.Groups[1].Value
)
\.(.*)
或(使用预测,将字符串作为Match.Value
)
(?<=\.).*
非正则表达式方法可以使用String#Split
count
参数(demo):
var s = "test.BO.ID";
var res = s.Split(new[] {"."}, 2, StringSplitOptions.None);
if (res.GetLength(0) > 1)
Console.WriteLine(res[1]);
答案 1 :(得分:3)
如果您只想要第一个点后的部分,则根本不需要正则表达式:
x.Substring(x.IndexOf('.'))