строка 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 в целое число, вы получили число в начале строка.