test regulares regular palabra expresiones expresion exacta especiales espacio ejemplos cualquier caracteres caracter blanco alfanumerico regex notepad++ regex-group

regex - palabra - expresiones regulares java



¿Cómo agrupo expresiones regulares más allá de la novena referencia inversa? (3)

OK, la coincidencia no es un problema, su ejemplo coincide conmigo en el Bloc de notas actual ++. Éste es un punto importante. Para usar expresiones regulares de PCRE en Notepad ++, necesita una versión> = 6.0 .

El otro punto es, ¿dónde quieres usar la referencia inversa? Puedo usar referencias con nombre sin problemas dentro de la expresión regular , pero no en la cadena de reemplazo.

medio

(?''a''[0-9]*),([0-9]*),/g{a}

coincidirá

1000,1001,1000

Pero no conozco una forma de usar grupos con nombre o grupos> 9 en la cadena de reemplazo.

¿Realmente necesita más de 9 referencias inversas en la cadena de reemplazo? Si solo necesita más de 9 grupos, pero no todos en el reemplazo, cree los grupos que no necesita para reutilizar los grupos que no capturan , agregando un ?: Al comienzo del grupo.

(?:[0-9]*),([0-9]*),(?:[0-9]*),([0-9]*) group 1 group 2

Ok, así que estoy intentando agrupar más allá de la novena referencia inversa en notepad ++. La wiki dice que puedo usar los nombres de grupo para ir más allá de la novena referencia. Sin embargo, parece que no puedo obtener la sintaxis correcta para hacer la coincidencia. Estoy empezando con solo dos grupos para hacerlo simple.

Data de muestra

1000,1000

Regex.

(?''a''[0-9]*),([0-9]*)

De acuerdo a los docs necesito hacer lo siguiente.

(?<some name>...), (?''some name''...),(?(some name)...) Names this group some name.

Sin embargo, el resultado es que no puede encontrar mi texto. ¿Alguna sugerencia?


Simplemente puede hacer referencia a grupos> 9 de la misma manera que a <10

Es decir, $ 10 es el décimo grupo.

Por ejemplo (ingenuo):

Cuerda:

ABCDEFGHIJKLMNOPQRSTU VWXYZ

Encontrar regex

(?: a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) (m) (n) (o) (p)

Reemplazar:

$ 10

Resultado:

kqrstuvwxyz

Mi prueba se realizó en Notepad ++ v6.1.2 y dio el resultado que esperaba.

Actualización: Esto todavía funciona a partir de v7.5.6

SarcasticSully resucitó esto para hacer la pregunta:

"¿Qué sucede si desea reemplazarse con el primer grupo seguido del carácter ''0''?"

Para hacer esto cambia el reemplazo a:

$ 1 / x30

Que está reemplazando con el grupo 1 y el carácter hexadecimal 30 , que es un 0 en ascii.


Una respuesta muy tardía para ayudar a otros que llegan aquí desde Google (como lo hice). Las referencias inversas nombradas en las sustituciones de notepad ++ se ven así: $+{name} . Por cualquier razón.

Sin embargo, aquí hay una desviación del regex estándar que se obtuvo aquí ... a las referencias inversas nombradas también se les asignan números. En la expresión regular, si tiene (.*)(?<name> & )(.*) , Reemplazaría con $1${name}$2 para obtener exactamente la misma línea con la que comenzó. En notepad ++, tendría que usar $1$+{name}$3 .


Ejemplo: necesitaba limpiar un archivo .sln de Visual Studio para configuraciones no coincidentes. El texto que necesitaba reemplazar se veía así:

{CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|Any CPU.ActiveCfg = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|Any CPU.Build.0 = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x64.ActiveCfg = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x64.Build.0 = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x86.ActiveCfg = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x86.Build.0 = Debug|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|Any CPU.ActiveCfg = Release|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|Any CPU.Build.0 = Release|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x64.ActiveCfg = Release|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x64.Build.0 = Release|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x86.ActiveCfg = Release|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x86.Build.0 = Release|Any CPU


Mi búsqueda RegEx:

^(/s*/{[^}]*/}/.)(?<config>[a-zA-Z0-9]+/|[a-zA-Z0-9 ]+)*(/..+=/s*)(.*)$

Mi reemplazo RegEx:

$1$+{config}$3$+{config}

El resultado:

{CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|Any CPU.ActiveCfg = Dev|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|Any CPU.Build.0 = Dev|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x64.ActiveCfg = Dev|x64 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x64.Build.0 = Dev|x64 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x86.ActiveCfg = Dev|x86 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.Dev|x86.Build.0 = Dev|x86 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|Any CPU.ActiveCfg = QA|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|Any CPU.Build.0 = QA|Any CPU {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x64.ActiveCfg = QA|x64 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x64.Build.0 = QA|x64 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x86.ActiveCfg = QA|x86 {CDDB12FE-885F-4FB7-9724-1A4279573DE5}.QA|x86.Build.0 = QA|x86

Espero que esto ayude a alguien.