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

Я искал вокруг некоторое время, чтобы выяснить, как подтвердить строку начинается с числа. Я наткнулся на оператор 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();
    }
}

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

5 ответов


ваше регулярное выражение неправильно. /.../ является соглашением javascript для определения регулярных выражений. Попробуйте так в C#:

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

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

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

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

вам не нужно регулярное выражение для этого. Попробуй!--4-->

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

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


это формат строки, которую вы предоставили регулярному выражению.Спичка.

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

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

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


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

и вы должны использовать Regex.IsMatch (...) если вы не собираетесь использовать MatchCollection from .Матч для чего угодно:

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

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

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

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