¿Cómo reemplazar todas las cadenas por números contenidos en cada cadena en Notepad ++?

108

Estoy tratando de encontrar todos los valores con el siguiente patrón:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

y reemplácelo con valor dentro de ámbitos.

Estoy usando la siguiente expresión regular para encontrar el patrón:

.*"\d+"

¿Cómo puedo hacer un reemplazo?

Anton Selin
fuente
2
¿Qué es la pieza de repuesto? ¿Podría darnos un ejemplo?
Toto
^. * value = "([^"] *) ". * $ verifique esta expresión regular y reemplace el valor \ 1 donde el valor necesario
Nikhil KS

Respuestas:

191

En Notepad ++ para reemplazar, presione Ctrl+ Hpara abrir el menú Reemplazar.

Luego, si marca el botón "Expresión regular" y desea en su reemplazo usar una parte de su patrón de coincidencia, debe usar "grupos de captura" (lea más en Google ). Por ejemplo, digamos que desea hacer coincidir cada una de las siguientes líneas

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

usando el .*"\d+"patrón y desea mantener solo el número. A continuación, puede utilizar un grupo de captura en su coincidencia de patrones, usando paréntesis (y ), de esa manera: .*"(\d+)". Entonces, en su reemplazo, simplemente puede escribir $1, donde $ 1 hace referencia al valor del primer grupo de captura y devolverá el número para cada coincidencia exitosa. Si tenía dos grupos de captura, por ejemplo (.*)="(\d+)", $1devolverá la cadena valuey $2devolverá el número.

Entonces usando:

Encontrar: .*"(\d+)"

Reemplazar: $1

Te devolverá

4
403
200
201
116
15

Tenga en cuenta que existen muchas formas alternativas y mejores de hacer coincidir el patrón mencionado anteriormente. Por ejemplo, el patrón value="([0-9]+)"sería mejor, ya que es más específico y estarás seguro de que coincidirá solo con estas líneas. Incluso es posible realizar el reemplazo sin el uso de grupos de captura, pero este es un tema un poco más avanzado, así que lo dejo por ahora :)

psxls
fuente
19
Para el reemplazo, $1no funcionó para mí. Usé en su \1lugar y funcionó.
Jason Wheeler
12
\1Funciona en todas las versiones de Notepad ++. $1solo funciona en los más nuevos.
Cullub
Supongo que esto no funciona con el Hex Editorcomplemento. En el modo de vista hexadecimal, Notepad ++ no muestra la Regular Expressionopción de Buscar / Reemplazar. En el modo de vista de texto, veo la Regular Expressionopción de Buscar / Reemplazar. Estoy usando Notepad ++ Versión 6.9.2, que es la versión actual en este momento.
Kevin Fegan
15

psxls dio una gran respuesta, pero creo que mi versión de Notepad ++ es ligeramente diferente, por lo que la captura de $ (signo de dólar) no funcionó.

Tengo Notepad ++ v.5.9.3 y así es como puede realizar su tarea:

Busque el patrón: valor = \ "([0-9] *) \" y reemplácelo con: \ 1 (lo que quiera hacer con ese grupo de captura)

Ex. Rodear con corchetes

[\ 1] -> producirá valor = "[4]"

dchayka
fuente
1
\1Me ayudó a mantener el número pero eliminar la cita detrás de él. Tenía alrededor de 7400 líneas en un documento como tablename.columnname = '12345'. La primera cita fue fácil de eliminar, la segunda se hizo usando su \1en el cuadro de texto de reemplazo. Gracias, +1
Ben Fransen
6

Reemplazar (.*")\d+(")

Con $1x$2

¿Dónde xestá su "valor dentro de los ámbitos"?

marsze
fuente
0

Tengo Notepad ++ v6.8.8

Buscar : [([a-zA-Z])]

Reemplazar : [\ '\ 1 \']

Producirá: $ matriz [XYZ] => $ matriz ['XYZ']

Juan Tapiador
fuente
-3

Encontrar: value="([\d]+|[\d])"

Reemplazar: \1

Realmente te devolverá

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);
user3178007
fuente
3
¿Cómo se relaciona esta solución de JavaScript con la pregunta que se etiquetó con Notepad ++?
Jason Aller
¿Cómo se pueden relacionar las respuestas defectuosas y rotas 1 y 2 con la pregunta que se etiquetó con Notepad ++?
user3178007
¿Por qué hice la pregunta aquí? Porque no puedo crear preguntas. Porque no tengo suficiente reputación.
user3178007
1
No existe tal requisito de reputación para hacer las preguntas que usted afirma; no es posible que haya estado restringido. Vuelva a intentarlo: stackoverflow.com/questions/ask
BoltClock
Se hizo la pregunta. stackoverflow.com/questions/24112018/… Pero la búsqueda está limitada en palabras. ¡La limitación es!
user3178007