2012-01-01 17 views
8

he estado tratando realmente difícil de entender expresión regular, ¿Hay alguna manera de que pueda reemplazar caracteres (s) que se encuentra entre dos cadenas/ Por ejemplo tengoRegex Reemplazar en el medio

sometextREPLACEsomeothertext

Quiero reemplazar, REEMPLAZAR (que puede ser cualquier cosa en el trabajo real) SOLO entre algún texto y otro texto con otra cadena. ¿Alguien puede ayudarme con esto?

EDITAR Supongamos, mi cadena de entrada es

sometext_REPLACE_someotherText_something_REPLACE_nothing

quiero reemplazar reemplazar texto en el medio SomeText y someotherText resultante siguiente salida

sometext_THISISREPLACED_some otherText_something_REPLACE_nothing

que

+0

¿Por qué cree expresiones regulares es la herramienta adecuada? – Oded

+1

'" sometextREPLACEsomeothext ".Replace (" REPLACE "," OtherText ")' – Matthias

+0

@MatthiasKoch no, reemplazará todo el texto REPLACE que no es lo que quiere, por ejemplo, si tengo algún text_REPLACE_someotherText_one_REPLACE_two, reemplazará todo el REEMPLAZAR texto. – 41K

Respuesta

8

Si entiendo bien su pregunta es posible que desee utilizar lookahead and lookbehind para su expresión regular

(?<=...) # matches a positive look behind 
(?=...) # matches a positive look ahead 

Así

(?<=sometext)(\w+?)(?=someothertext) 

coincidiría cualquier 'palabra' con al menos 1 carácter que sigue a 'SomeText' y seguido por 'someothertext'

En C#:

result = Regex.Replace(subject, @"(?<=sometext)(\w+?)(?=someothertext)", "REPLACE"); 
+0

Sí, esto está bastante cerca, pero aún así parece una coincidencia codiciosa, ¿puedes hacerlo perezoso? – 41K

+2

@ 41K: la expresión regular editada es floja. –

+0

Excelente. Gracias. – 41K

0

Gracias Esta es la expresión regular para comprobar si la cadena es válida.

\^.REPLACE.\ 

C# reemplazan

string s = "sdfsdfREPLACEdhfsdg"; 
string v = s.Replace("REPLACE", "SOMETEXT"); 
+0

no funciona, vea mi comentario en la parte superior – 41K

+0

¿No puede simplemente ir a la página de reemplazo ("sometext_REPLACE_other text", "sometext_TEXT_othertext")? –

+0

no porque REEMPLAZAR puede ser cualquier cosa en la cadena de origen – 41K

Cuestiones relacionadas