La afirmación regular de que los dobles positivos y negativos cumplen mis requisitos de coincidencia del 100 %

prefacio

Aplicación de expresiones regulares: las expresiones regulares son un arma indispensable en el procesamiento diario de datos, especialmente cuando existen como lenguajes de secuencias de comandos, ¡las expresiones regulares son una habilidad imprescindible! Es posible que no le guste usar expresiones regulares, porque escribir expresiones regulares es muy difícil cada vez problemas. Pero la expresión regular es realmente flexible. Hoy aprenderemos la función de aserción de marcador de posición de la expresión regular, que puede hacer que nuestra expresión regular sea más precisa.

Escenas

Simple

  • En la expresión regular, desea establecer un alias para la coincidencia. He introducido este tipo de operación antes, y se siente muy bien usarlo más tarde. Aquí se considera como un nivel de entrada simple.
 
 

Java

copiar codigo

Pattern compile = Pattern.compile("(.*)\\*\\{(?<c>\\d+)\\}"); Matcher matcher = compile.matcher("zxhtom*{3}"); if (matcher.find()) { System.out.println(matcher.group("c")); }

  • Solo necesitamos agregar el nuevo formulario en los paréntesis correspondientes ?<name>. En este momento, solo necesitamos obtener el contenido coincidente llamado c. No hay necesidad de preocuparse por su posición en la regularización.

Avanzado

Creo que la mayoría de la gente se queda en el nivel de entrada. Al menos he estado lidiando con escenarios de desarrollo del día a día con técnicas de nivel de entrada. Pero la regularización no se trata solo de esas funciones. Comprender técnicas avanzadas nos permite usar expresiones regulares con gracia

Mirar

  • Esta función existe en el campo de las expresiones regulares  断言 , que pueden entenderse como  java aserciones, porque las aserciones aquí no ocupan espacio y solo se usan para juzgar si continúan funcionando. Para la subdivisión, hay afirmaciones previas y posteriores al predicado positivas y negativas.

  • Hice un dibujo y describí aproximadamente lo que se llama primero y último. Lo que es positivo y negativo.
  • Como se muestra arriba, la h en nuestra regularización coincide con el lugar rojo. Esto último  ?=tom significa que  tom se debe hacer coincidir la siguiente cadena, y el contenido de coincidencia final es  hporque la afirmación no ocupa un lugar.
  • Entonces, ¿qué es exactamente positivo y negativo, y cuál es el primer movimiento antes del movimiento? afirmar que el formato es (?[direction][updown][pattern])
  • Entre ellos, las variables variables se encierran entre corchetes.
  • dirección significa primero y último
  • updown representa positivo y negativo
  • patrón representa nuestra expresión de coincidencia. Puede ser nuestro regular regular
concepto explicar oficial
Adelante contenido coincidente arriba abajo es = signo
Negativo Negar, no coincide con el contenido arriba abajo para el número !
precedencia coincidir de izquierda a derecha la dirección está vacía
hacia atrás coincidir de derecha a izquierda la dirección es el signo <
  • Ok, ahora conocemos el concepto. h Ahora, ¿qué hacemos para que coincida con el primer carácter  ?

precedencia

  • Primero, usamos una estrategia anticipada para hacer coincidir. El primero es el orden de izquierda a derecha, luego debemos mirar  h el contenido detrás. El de atrás es  zxh. Entonces podemos escribir así  h(?=zxh) , luego buscaremos  hzxh la h al principio de .

hacia atrás

  • Después de la implementación de la primera línea, echemos un vistazo a cómo implementar la segunda línea. La siguiente fila es el orden de derecha a izquierda. Entonces, ¿qué tenemos que mirar  h a la izquierda? Sí ~ nada. Nada Hay un símbolo especial en la expresión regular  \b para indicar el límite de la palabra.
  • Combinada con la correspondencia negativa que dijimos, la negación de la nada es cualquier símbolo. podemos expresar  (?!\w) .
  • \bh Entonces, ¿ puedo  yo (?<!\w)h

resumen

  • Positivo y negativo son fáciles de entender, es decir, las dos funciones de coincidencia completa y negación.

  • Avanzar y retroceder son principalmente las direcciones a considerar. Por ejemplo, ahora que tengo un patrón regular, ¿  (?<=zxh)123 cómo lo combinará? En primer lugar,  < podemos saber que es una coincidencia inversa. Es decir, la coincidencia es la parte izquierda de la afirmación. Es decir, coincide con 123 en zxh123.

  • También hay afirmaciones que no ocupan espacio. Esto debe quedar claro. (?<=\w)zxh Solo puede coincidir con zxh, pero quiero que coincida con zxh dentro de la palabra y que contenga 3 caracteres a la izquierda. Una afirmación es solo un marcador. No se puede participar en el emparejamiento real.

  • Las aserciones también son multiverificables. Normalmente afirmamos que es una relación AND, y podemos usar expresiones regulares   para invalidar el efecto OR.

Caso específico

  • Las expresiones regulares son ligeramente diferentes en diferentes idiomas. A continuación, hablemos sobre el uso de expresiones regulares para mis lenguajes de uso común.

linux

  • La coincidencia regular en Linux es una expresión regular que personalmente creo que es una versión castrada. Probablemente hay lugares vim, grep y sed donde se usan expresiones regulares en Linux.
  • Y grep es en realidad una operación de búsqueda. Todos los usos de expresiones regulares solo tienen funciones de coincidencia. Y sed es una operación sobre caracteres, por lo que el uso de expresiones regulares en sed es muy completo. El resto es el uso de expresiones regulares en vim.

echo "<title>hello</title>sdf<title>nihao</title>" | sed -n '/title.\?/p'

  • Arriba simplemente usamos las expresiones regulares de grep. la consulta sed es la misma operación. () Sin embargo, debe tenerse en cuenta que los símbolos clave, como los de las expresiones regulares  + , deben escaparse antes de su uso  \ .

echo "hello i am zxhtom" | sed 's/\(.*\)zxhtom/\1d/'

  • A lo que también debemos prestar atención en el caparazón es al reemplazo de caracteres. Después de todo, encuentre coincidencias, use principalmente lo mismo. En el shell, use =~ para realizar coincidencias regulares.
 
 

caparazón

copiar codigo

if [[ "${version}" =~ (.*)(1.2.5\.[0-9]{4}[01]{1}[0-9]{1}[0-3]{1}[0-9]{1}.*) ]] then pre=${BASH_REMATCH[1]} version=${BASH_REMATCH[2]} echo ${version} fi

  • En lo anterior, obtenemos el elemento de coincidencia especificado al hacer la coincidencia y luego lo empalmamos a través del lenguaje de shell para lograr la función de reemplazo de caracteres.

Link de referencia

Prueba de expresiones regulares de JavaScript

relajarse por un momento

Corrección hace mucho, pero el estímulo hace más. - Johann Wolfgang von Goethe

Supongo que te gusta

Origin blog.csdn.net/BASK2312/article/details/131272090
Recomendado
Clasificación