¿Hay alguna forma de buscar un patrón en un documento de MS Word?


30

¿Hay alguna manera de buscar patrones dentro de un documento de MS Word en lugar de una coincidencia exacta?

Tengo un documento donde todos los decimales se han escrito como en /lugar de .. Por ejemplo, 1.02se ha escrito como 1/02, porque la tipografía persa usa en /lugar del .punto decimal.

Como /no solo se usa para decimales, y tiene otras aplicaciones, por ejemplo, fracciones, porcentajes, etc., ¿hay alguna manera de encontrar un patrón como N/Mdentro de un documento de Word, donde Ndenota un decimal y Mtambién muestra otro número decimal?


2
¿Cómo es que esto no es un duplicado más de 5 años después del lanzamiento de Super User?
Peter Mortensen


Bueno, sería difícil moverlo al bloc de notas si hubiera otro texto en el medio, supongamos que uno está escribiendo un artículo de revista (en su lugar, use látex) para que no puedan moverlo fuera de la palabra, o algo por el estilo. Perdería todo el otro formato.
Charm_quark

1
Acabo de verificar: las últimas versiones de MS Word almacenan documentos de Word (* .docx) como documentos basados ​​en XML comprimidos. Una vez que sepa cómo funciona esta estructura, puede descomprimir su archivo * .docx y hacer una coincidencia de patrones en las estructuras de archivos XML resultantes.
Dominique

@Dominique que es interesante. No sabía eso
codezombie

Respuestas:


12

como 'N / M' dentro de un documento de Word, donde N denota un decimal y M también muestra otro número decimal

Solo para una búsqueda que puede usar ^#/^#como parámetro de búsqueda. Debajo de las más opciones, y encontrar Especial , hay algunas otras opciones que pueden ser útiles.

Nb: ^#es un decimal, por lo que si está buscando específicamente x / aa, entonces sería ^#/^#^#etc.

para reemplazar,

Esta es una mejor opción, realizar búsquedas con ([0-9])/([0-9])y reemplazar con \1.\2, y habilitar "usar comodines"


Gracias. Esto encuentra los golpes. pero Word no acepta ^ #. ^ # para la parte de reemplazo. Quiero dejar intactos los dígitos que rodean '/' y reemplazar '/' con '.'.
codezombie

1
intente hacer una búsqueda con esto, "([0-9]) / ([0-9])" y reemplácelo con "\ 1. \ 2", saque la comilla doble. y habilitar "usar comodines"
Charm_quark

37

Palabra

Usar la implementación de expresiones regulares de Microsoft

Presione CTRL+ H»haga clic en Más » Habilitar Usar comodines

  • Encontrar que: ([0-9]{1,2})/([0-9]{2})
  • Reemplazar con: \1.\2

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Esto parece un patrón de búsqueda loco, así que examinémoslo:

  • [0-9] representa un solo valor numérico (0,1,2,3,4,5,6,7,8 y 9)
  • {1,2}se usa para contar las ocurrencias del carácter o expresión anterior. En nuestro caso, esto significa: Buscar solo uno o dos números .

    Precaución: si usa una palabra alemana, debe usarla ;como separador en lugar de,

  • /No tiene un significado especial. Literalmente busca una barra
  • ()Los corchetes son importantes. Dividen el patrón en secuencias lógicas para que luego podamos usar \1, \2... \nen nuestro patrón de reemplazo. De esta manera preservamos los valores.

Lea más en la sección Las expresiones, Pieza por pieza en el artículo de soporte de Microsoft o en el sitio de Word de Graham Mayor


VBA (mejor solución)

Le sugiero que use un método VBA que se adhiera más al valor predeterminado de otros motores RegEx. Están mejor documentados y más personas pueden ayudarlo.

Esta macro solicita un patrón RegEx para buscar en todo el documento y reemplazarlo con su cadena dada.

Presione ALT+ F11para abrir el editor VBA. Pegue el código en cualquier lugar y ejecútelo conF5

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")    
    On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("Find what:")
    ActiveDocument.Range = _ 
        RegEx.Replace(ActiveDocument.Range, InputBox("Replace with:"))        

End Sub
  • Encontrar que: (?!\d)/(?=\d)
  • Reemplazar con: .

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.