La cadena C#comienza con un número de expresiones regulares
regex string (5)
He estado buscando por un momento para averiguar cómo confirmar que una cadena comienza con un número. Me encontré con una declaración de expresiones regulares ''/ ^ / d /'' que puedo confirmar que dice si comienza con un dígito. Sin embargo, no puedo lograr que funcione en el código de abajo. ¿Dónde me equivoqué en la declaración if(Regex.Match(info,"/^/d/"))
?
//String attachbody is the attachment body from an email C 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();
}
}
Datos de ejemplo (delimitados por tabuladores):
TicketID Estado URL InitCats PostRevCats ListNumClosed 555555 Cerrado http://5555555.com/searcho Sitios maliciosos 55555
Es el formato de la cadena que le ha proporcionado a Regex.Match.
El formato correcto sería:
Regex.Match(info,@"^/d")
La @ significa que los caracteres de escape (como la barra inclinada hacia atrás) se tratan como caracteres normales. Sin él, su expresión regular tendría que ser "^//d"
.
No necesitas una expresión regular para esto. Tratar
if (info.Length > 0 && char.IsDigit(info[0]))
{
...
}
Si desea utilizar la expresión regular, saque la //
para que sea solo Regex.IsMatch(info,@"^/d")
.
Si solo intentas descubrir si la cadena comienza con un número. Como arriba, puedes saltar con regex. Simplemente use Subcadena, elimine el primer carácter y pruebe si es un número.
Ahora, si intenta eliminar el número completo, convertiría la cadena a una matriz de caracteres y probaría los caracteres.
pseudo cadena s = "" para cada c en los caracteres {si c es el número, s + = c else exit for} convierte la s en un número entero, obtuviste el número al principio de la cadena.
Su expresión regular está mal. .Net no usa expresiones regulares de estilo perl. La expresión correcta es @ "^ / d".
Y debes usar Regex.IsMatch (...) si no vas a usar MatchCollection de .Match para nada:
RegEx.IsMatch(info, @"^/d")
Su expresión regular está mal. /.../
es la convención de javascript para definir expresiones regulares. Prueba esto en C #:
if (Regex.IsMatch(info, @"^/d"))
También tenga en cuenta que debe usar el método IsMatch que devuelve booleano o su código ni siquiera se compilará.
Y si desea que coincida, la cadena comienza con uno o más dígitos:
if (Regex.IsMatch(info, @"^/d+"))