使用正则表达式从字符串中获取子字符串

时间:2010-08-15 13:25:45

标签: c# .net regex

如何从这种格式的字符串中获取我的四个数字:

一些带有1个数字的文字( 10 / 100 )其他一些文字......从 -10 °C到 50 °C

其他一些文字包含2个数字( 10 / 100 )其他一些文字...从 -11 °C到 -2 °C

其他一些文字-30号( 100 / 1001 )其他一些文字......从 2 °C到 12 °C

前两个数字在括号中,并用斜线分隔。此外,斜杠后面没有空格,我不得不添加它以便能够使数字变为粗体。这两个数字都是正整数。

第三个数字始终位于“From”和第一个“°C”之间。

第四个数字始终位于“°C to”之后,最后一个“°C”。

字符串中没有其他括号,其中只有一个“From”字样。

我正在使用C#和.NET 3.5。

1 个答案:

答案 0 :(得分:3)

这将有效:

^.*\( *(\d+) */ *(\d+) *\)\D*?From +(-?\d+)°C +to +(-?\d+)°C$

它只读取文本字符串中的4个数字(前两个始终为正数,后两个为正数或负数) - 它查找前两个数字的括号,并检查最后两个数字与“来自”的关系和“到”

var pattern = @"^.*\( *(\d+) */ *(\d+) *\)\D*?From +(-?\d+)°C +to +(-?\d+)°C$";

var result = Regex.Match("Some other text with 2 numbers (10/ 100) some other text... From -11°C to -2°C", pattern);

var num1 = int.Parse(result.Groups[1].Value);
var num2 = int.Parse(result.Groups[2].Value);
var num3 = int.Parse(result.Groups[3].Value);
var num4 = int.Parse(result.Groups[4].Value);