c# \b - ¿Cómo puedo unir una cadena completa con una expresión regular?





+)\ *\ (8)


En general, y con la configuración predeterminada, ^ y $ anchors son una buena forma de garantizar que una expresión regular coincida con una cadena completa.

Algunas advertencias, sin embargo:

Si tienes alternancia en tu expresión regular, asegúrate de incluir tu expresión regular en un grupo que no sea de captura antes de rodearlo con ^ y $ :

^foo|bar$

es por supuesto diferente de

^(?:foo|bar)$

Además, ^ y $ pueden tomar un significado diferente (inicio / fin de línea en lugar de inicio / fin de cadena ) si se establecen ciertas opciones. En los editores de texto que admiten expresiones regulares, este suele ser el comportamiento predeterminado. En algunos idiomas, especialmente Ruby, este comportamiento ni siquiera se puede desactivar.

Por lo tanto, hay otro conjunto de anclajes que garantiza que solo coinciden al principio / final de la cadena completa:

\A coincidencias al comienzo de la cadena.

\Z coincide al final de la cadena o antes de un salto de línea final.

\z coincide al final de la cadena.

Pero no todos los idiomas admiten estos anclajes, especialmente JavaScript.

Necesito una expresión regular que solo encuentre coincidencias donde toda la cadena coincida con mi consulta.

Por ejemplo, si realizo una búsqueda de películas con el nombre "Octubre rojo", solo quiero hacer coincidir el título exacto (sin distinción entre mayúsculas y minúsculas) pero no con títulos como "La búsqueda del octubre rojo". No estoy seguro de saber cómo hacerlo. ¿Nadie sabe?

¡Gracias!




Lo siento, pero eso no está claro.

Por lo que leí, quieres hacer una comparación simple de cadenas. No necesitas expresiones regulares para eso.

string myTest = "Red October";
bool isMatch = (myTest.ToLower() == "Red October".ToLower());
Console.WriteLine(isMatch);
isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower());



Pruebe la siguiente expresión regular:

^Red October$

Por defecto, las expresiones regulares son sensibles a mayúsculas y minúsculas. El ^ marca el comienzo del texto coincidente y $ el final.




Use los modificadores ^ y $ para indicar dónde se encuentra el patrón de expresiones regulares en relación con el inicio y el final de la cadena:

Regex.Match("Red October", "^Red October$"); // pass
Regex.Match("The Hunt for Red October", "^Red October$"); // fail



Coincidencia de la cadena completa se puede hacer con ^ y $ como se dijo en las respuestas anteriores.

Para que la caja de expresiones regulares no sea sensible, puedes implementar un truco que involucre clases de caracteres. Muchas clases de personajes

^[Rr][Ee][Dd] [Oo][Cc][Tt][Oo][Bb][Ee][Rr]$



Debe incluir su expresión regular en ^ (inicio de cadena) y $ (fin de cadena):

^Red October$



Sé que esto puede ser un poco tarde para responder a esto, pero tal vez sea útil para otra persona.

La manera más simple:

var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
    //pass
} else {
    //fail
}



Nota: No uses esto en código real.

Como alternativa a las expresiones regulares para una cadena literal simple, puede usar

str = "Test abc test test abc test...".split("abc").join("");

El patrón general es

str.split(search).join(replacement)

Esto solía ser más rápido en algunos casos que usar replaceAll y una expresión regular, pero ya no parece ser el caso en los navegadores modernos. Por lo tanto, esto solo debería usarse como un truco rápido para evitar tener que escapar de la expresión regular, no en código real.







c# .net regex