Регулярное выражение для чисел в строке - PullRequest
1 голос
/ 19 октября 2011

Строка ввода "134.45sdfsf" передана следующему утверждению

System.Text.RegularExpressions.Regex.Match(input, pattern).Success;

возвращает true для следующих шаблонов.

pattern = "[0-9]+"

pattern = "\\d+"

Q1) Как, черт возьми! Я указываю только цифры, а не специальные символы или алфавиты. Так что же не так с моим шаблоном, если я получу ложное возвращаемое значение с помощью приведенного выше оператора кода.

В2) Как только я получу правильный шаблон, соответствующий только цифрам, как мне извлечь все числа в строке? Допустим, сейчас я просто хочу получить целые числа в строке в формате "int.int^int" (например, "11111.222^3333", в этом случае я хочу извлечь строки "11111", "222" и "3333").

Есть идеи?

Спасибо

Ответы [ 3 ]

3 голосов
/ 19 октября 2011
  1. Вы указываете, что он содержит хотя бы одну цифру в любом месте , а не все они. Вы ищете выражение ^\d+$. ^ И $ обозначают начало и конец строки соответственно. Вы можете прочитать больше об этом здесь .

  2. Используйте Regex.Split для разделения на любые не -разрядные строки. Например:

    string input = "123&$456";
    var isAllDigit = Regex.IsMatch(input, @"^\d+$");
    var numbers = Regex.Split(input, @"[^\d]+");
    
1 голос
/ 19 октября 2011

он говорит, что нашел его.

, если вы хотите, чтобы все выражение проверялось так:

^[0-9]+$
0 голосов
/ 19 октября 2011

Q1) Оба шаблона верны.

Q2) Предположим, что вы ищете шаблон номера "5 цифр-точка-3 цифры - ^ - 4 цифры" - вот что вы ищете:

        var regex = new Regex("(?<first>[0-9]{5})\.(?<second>[0-9]{3})\^(?<third>[0-9]{4})");
        var match = regex.Match("11111.222^3333");
        Debug.Print(match.Groups["first"].ToString());
        Debug.Print(match.Groups["second"].ToString            
        Debug.Print(match.Groups["third"].ToString

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

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