寻找正则表达式以获得第二个点之前的子字符串

时间:2017-08-28 14:44:30

标签: c#

我有以下格式的字符串,

string str = "8.8.0.4566";

首先,我需要使用正则表达式“(\ d *。\ d *)。+ /)”来验证格式,然后需要在第二个点之前提取子字符串。

我能够使用下面的内容,但寻找正则表达式来验证和提取,

 str= str.Substring(0, str.IndexOf('.', str.IndexOf('.') + 1));

4 个答案:

答案 0 :(得分:3)

var s = "8.8.0.4566";

var pattern = @"(?'first_two'\d+\.\d+)(\.\d+){2}";

var match = new Regex(pattern).Match(s);

Console.WriteLine(match.Value); //prints '8.8.0.4566'
Console.WriteLine(match.Groups["first_two"].Value); //prints '8.8'

答案 1 :(得分:2)

Try this link here

^[^.]*\.[^.]*

答案 2 :(得分:2)

您可以验证它并使用此正则表达式获取子字符串:

^(\d+\.\d+)(\.\d+)+

所需的子字符串在第1组中。检查here

答案 3 :(得分:1)

如果您需要在第二个点(.)之前“提取”所有内容,那么为什么不使用积极的前瞻:

string str = "8.8.0.4566";
string pattern = @"^\d+.\d+(?=\.)";
var match = new Regex(pattern).Match(str);
// do something with match

或者简单地说:

string str = "8.8.0.4566";
string pattern = @"^(\d+\.){2}";
var match = new Regex(pattern).Match(str);
string result = match.Value.Substring(0, match.Length - 1);

Regex101
Rextester