my $book = Spreadsheet::Read->new();
my $book = ReadData
('D:\Profiles\jmahroof\Desktop\Scheduled_Build_Overview.xls');
my $cell = "CD7";
my $n = "1";
my $send = $book->[$n]{$cell};
$send =~ s/\(/ /g;
$send =~ s/\)//g;
Tengo el código anterior que obtiene datos de un archivo de Excel y luego selecciona el texto de una celda específica y elimina los corchetes de la cadena. Necesito poder eliminar todo lo que está dentro de los corchetes, incluidos los corchetes, mientras dejo el resto del texto. El formato de la cadena es exactamente como el siguiente:text(text)
$send =~ s/\(.*?\)//;
Explicado:
s/
¿La búsqueda \
escapa del corchete que viene a continuación, ya que se verá como parte del código si no se escapa? (.*?\)
aquí decimos lo que estamos buscando y usamos no codiciosos. *? para hacer coincidir cualquier cosa hasta el último corchete nuevamente, el último corchete se escapa por \
/
comienza la función de reemplazo para la búsqueda /
finaliza la búsqueda y reemplazo.
Entonces buscamos (*) y luego reemplazamos con nada.
Explicando No codicioso vs codicioso.
. * ser codicioso coincidirá hasta el último )
encontrado
Entonces, si lo hemos hecho string((substring)end)
then s/(.*)//
, iremos desde el primero (
hasta el último )
dejándote constring
no codicioso no lo hará, comenzará con el primero (
hasta el primero )
dejándote con stringend)
lo que será perezoso y solo coincidirá con lo que pides, que es de (a) donde codicioso coincidirá con todo, incluso si tienes esto(string)(())((strings))()()strings)strings)
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras