Necesito una expresión regular que solo encuentre coincidencias donde toda la cadena coincide con mi consulta.
Por ejemplo, si hago una búsqueda de películas con el nombre "Octubre rojo", solo quiero hacer coincidir ese título exacto (no distingue entre mayúsculas y minúsculas) pero no coincide con títulos como "La caza del octubre rojo". No estoy muy seguro de saber cómo hacer esto. ¿Nadie sabe?
¡Gracias!
string.Contains
?string1.Equals(string2, StringComparison.OrdinalIgnoreCase);
Respuestas:
Prueba la siguiente expresión regular:
De forma predeterminada, las expresiones regulares distinguen entre mayúsculas y minúsculas. El
^
marca el inicio del texto coincidente y$
el final.fuente
$
no siempre coincide con el final de la cadena,\z
sí (\Z
es el equivalente en Python). Consulte la respuesta de Tim Pietzcker . Sin embargo, es cierto para JavaScript.En general, y con la configuración predeterminada,
^
y$
los anclajes son una buena manera de asegurar que una expresión regular coincide con una cadena completa.Sin embargo, algunas advertencias:
Si tiene alternancia en su expresión regular, asegúrese de encerrar su expresión regular en un grupo que no captura antes de rodearla con
^
y$
:es por supuesto diferente de
Además,
^
y$
puede adquirir un significado diferente (inicio / final de línea en lugar de inicio / final de cadena ) si se establecen determinadas 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 están garantizados para coincidir solo al principio / final de toda la cadena:
\A
coincide con el comienzo de la cadena.\Z
coincide con el final de la cadena o antes de un salto de línea final.\z
coincide con el final de la cadena.Pero no todos los lenguajes admiten estos anclajes, especialmente JavaScript.
fuente
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
fuente
Sé que esto puede ser un poco tarde para responder esto, pero quizás sea útil para otra persona.
Manera más sencilla:
var someString = "..."; var someRegex = "..."; var match = Regex.Match(someString , someRegex ); if(match.Success && match.Value.Length == someString.Length){ //pass } else { //fail }
fuente
Debe encerrar su expresión regular en
^
(inicio de cadena) y$
(final de cadena):fuente
Lo siento, pero eso no está claro.
Por lo que leí, quieres hacer una comparación de cadenas simple. No necesitas regex 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());
fuente
Puede hacerlo así si solo quiero capturar una vez la letra menos a en una cadena y se puede verificar con myRegex.IsMatch ()
^ [^ e] [e] {1} [^ e] $
fuente