Получить подстроку из строки с регулярным выражением - PullRequest
3 голосов
/ 15 августа 2010

Как я могу получить мои четыре числа из строк в этом формате:

Некоторый текст с 1 цифрой ( 10 / 100 ), другой текст ... От -10 ° C до 50 ° С

Какой-то другой текст с 2 числами ( 10 / 100 ), другой текст ... От -11 ° C до -2 ° С

Какой-то другой текст с цифрами -30 ( 100 / 1001 ), другой текст ... От 2 ° C до 12 ° С

Первые два числа заключены в скобки и разделены косой чертой. Кроме того, за косой чертой нет места, я должен был добавить ее, чтобы сделать цифры жирными. Оба числа являются положительными целыми числами.

Третье число всегда между «От» и первым «° C».

Четвертое число всегда следует за «° C» и последним «° C».

В строке нет других скобок, и в ней только одно слово "From".

Я использую C # и .NET 3.5.

1 Ответ

3 голосов
/ 15 августа 2010

Это будет работать:

^.*\( *(\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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...