2008-12-14 15 views
5

Tengo una cadena que pareceExpresión regular: ¿Cómo poner comillas simples alrededor de valores de atributo XML?

"<input id=a/>"<input id=b/>"<input id=c/>etc. 

necesito cambiarlo a

"<input id='a'/>"<input id='b'/>"<input id='c'/>etc, 

alguna idea de cómo?

+0

Por favor, ponga un poco de esfuerzo en sus preguntas. Elija un título significativo, por ejemplo. – hop

+0

¡Guau! ¿Nadie se molestó en verificar el formato antes de abandonar esta pregunta? – tvanfosson

+0

sigue siendo una mala pregunta. ¿En qué idioma debería estar la respuesta? ¿Por qué nos está arrojando un problema relativamente trivial sin el menor esfuerzo? – hop

Respuesta

1

¿Qué tal esto:

%s/"<input id=\(.\)\/>/"<input id='\1'\/>/g 

Esto también funcionaría:

%s/\("<input id=\)\(.\)\/>/\1'\2'\/>/g 
4

En C# podría escribir como:

resultString = Regex.Replace(subjectString, @"(<.*?id\s*=\s*)(\w+)(.*?>)", "$1'$2'$3", RegexOptions.Multiline); 

en VB.Net simplemente sería :

ResultString = Regex.Replace(SubjectString, "(<.*?id\s*=\s*)(\w+)(.*?>)", "$1'$2'$3", RegexOptions.Multiline) 

En canónica Perl, se podría escribir como:

$subject =~ s/(<.*?id\s*=\s*)(\w+)(.*?>)/$1'$2'$3/mg; 

En PHP:

$result = preg_replace('/(<.*?id\s*=\s*)(\w+)(.*?>)/m', '$1\'$2\'$3', $subject); 

En Java:

resultString = subjectString.replaceAll("(?m)(<.*?id\\s*=\\s*)(\\w+)(.*?>)", "$1'$2'$3"); 

en javascript:

result = subject.replace(/(<.*?id\s*=\s*)(\w+)(.*?>)/mg, "$1'$2'$3"); 
+0

salvavidas! gracias –

0

Es difícil responder realmente esto con solo una pequeña muestra. Para el texto de muestra dado, se puede buscar la expresión regular:

=(\w) 

y sustituirla por:

='$1' 

o:

='\1' 

Dependiendo de si el lenguaje de programación que está trabajar con interpreta $ 1 o \ 1 como referencia al primer grupo de captura en el texto de reemplazo.

Esta función de búsqueda y reemplazo trivial funciona perfectamente en su texto de muestra dado.

Me temo que no funcionará en sus datos reales. Si ese es el caso, es porque su texto de muestra no es representativo de sus datos reales. La parte más difícil en la creación de expresiones regulares es averiguar qué es lo que quiere hacer coincidir y qué no desea que coincida. Esto es algo que debes especificar en tu pregunta.

Cuestiones relacionadas