Строка С# начинается с числа регулярных выражений

Я искал вокруг немного, чтобы понять, как подтвердить, что строка начинается с числа. Я столкнулся с выражением regex '/^\d/', которое я могу подтвердить, если оно начинается с цифры. Однако я не могу заставить его работать в коде ниже. может ли кто-нибудь указать, где я ошибся в утверждении if (Regex.Match(info, "/^\d/" ))? Спасибо!

//String attachbody is the attachment body from an email i read into a string
string[] data = Regex.Split(attachbody, "\n");

foreach (String info in data)
{
    if (Regex.Match(info,"/^\d/"))
    {
        string[] tabbedHeaderData = Regex.Split(info, "\t");
        TicketID = tabbedHeaderData[0].ToString();
        Status = tabbedHeaderData[1].ToString();
        URL = tabbedHeaderData[2].ToString();
        InitCats = tabbedHeaderData[3].ToString();
        PostRevCats = tabbedHeaderData[4].ToString();
        ListNumClosed = tabbedHeaderData[5].ToString();

        Console.WriteLine(TicketID);
        Console.WriteLine(Status);
        Console.WriteLine(URL);
        Console.WriteLine(InitCats);
        Console.WriteLine(PostRevCats);
        Console.WriteLine(ListNumClosed);
        Console.ReadLine();
    }
}

пример данных по запросу (с разделителями табуляции): URL статуса TicketID InitCats PostRevCats ListNumClosed 555555 Закрыто http://5555555.com/searcho Вредоносные сайты 55555

Ответ 1

Ваше регулярное выражение неверно. /.../ - это соглашение javascript для определения регулярных выражений. Попробуйте в С#:

if (Regex.IsMatch(info, @"^\d"))

Также обратите внимание, что вы должны использовать метод IsMatch, который возвращает логическое значение, или ваш код даже не будет компилироваться.

И если вы хотите, чтобы строка начиналась с одной или нескольких цифр:

if (Regex.IsMatch(info, @"^\d+"))

Ответ 2

Для этого вам не нужно регулярное выражение. Попробуйте

if (info.Length > 0 && char.IsDigit(info[0]))
{
   ...
}

Если вы хотите использовать регулярное выражение, выньте //, чтобы он просто Regex.IsMatch(info,@"^\d").

Ответ 3

Это формат строки, которую вы передали в Regex.Match.

Правильный формат:

Regex.Match(info,@"^\d")

Значение @означает, что escape-символы (например, обратная косая черта) рассматриваются как обычные символы. Без него ваше регулярное выражение должно быть "^\\d".

Ответ 4

Ваше регулярное выражение неверно..Net не использует регулярные выражения perl-стиля. Правильное выражение: @ "^\d".

И вы должны использовать Regex.IsMatch(...), если вы не собираетесь использовать MatchCollection из .Match для чего-либо:

RegEx.IsMatch(info, @"^\d")

Ответ 5

Если вы пытаетесь выяснить, начинается ли строка с номера. Как и выше, вы можете использовать canskip с помощью регулярного выражения. Просто используйте Substring, удалите первый символ и проверьте, является ли это числом.

Теперь, если вы пытаетесь удалить все число, я бы преобразовал строку в массив char и проверил символы.

псевдо string s = "" для каждого c в символах { если с - число, то s + = c еще выход для } преобразуйте s в целое число, вы получили номер в начале строки.