Как я могу извлечь подстроку из строки, используя регулярные выражения? - PullRequest
1 голос
/ 02 апреля 2010

Допустим, у меня есть строка "ABCDEF34GHIJKL". Как мне извлечь число (в данном случае 34) из строки, используя регулярные выражения?

Я мало знаю о регулярных выражениях, и хотя я хотел бы узнать все, что можно об этом знать, временные ограничения заставили меня просто выяснить, как этот конкретный пример будет работать.

Любая информация будет принята с благодарностью!

Спасибо

Ответы [ 3 ]

4 голосов
/ 02 апреля 2010

Это очень специфичный для языка вопрос, но вы не указали язык. Исходя из предыдущих вопросов, которые вы задавали, я собираюсь предположить, что вы имели в виду этот вопрос на языке C #.

Для этого сценария просто запишите регулярное выражение для числа и примените его к вводу.

var match = Regex.Match(input, "\d+");
if ( match.Success ) {
  var number = match.Value;
}
0 голосов
/ 03 апреля 2010

Я согласен со спокойной ([0-9]+) - это главное, о чем нужно беспокоиться. Однако вы можете заметить, что во многих языках вам нужно использовать обратные ссылки (обычно \\1 или \1), чтобы получить значение. Например

"ABCDEF34GHIJKL".sub(/^.*?([0-9]+).*$/, "\\1")

Однако лучшим решением в Ruby будет следующее, а также совпадение с несколькими числами в строке.

"ABCDEF34GHIJ1001KL".scan(/[0-9]+/) { |m|
    puts m
}

# Outputs:
34
1001

Большинство языков имеют схожие методы. Здесь есть несколько примеров различных языков http://www.regular -expressions.info / tools.html , а также несколько хороших примеров использования обратных ссылок.

0 голосов
/ 02 апреля 2010

Зависит от языка, но вы хотите сопоставить это выражение с ([0-9]+). Это найдет (первая группа) цифр в строке. Если ваш механизм регулярных выражений ожидает совпадения в начале строки, вам нужно добавить .*?([0-9]+).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...