es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extraiga todas las palabras en MAYÚSCULA del documento utilizando PowerShell

Usando PowerShell, extrae todas las palabras en mayúsculas de un documento. Todo funciona hasta la última línea de código por lo que puedo ver. ¿Hay algo incorrecto con mi expresión regular o es mi enfoque completamente incorrecto?

“`powershell

<h1>Extraer el contenido de un documento de Microsoft Word en texto</h1>

$word = New-Object -comobject Word.Application
$word.Visible = $True
$doc = $word.Documents.Open("D:\Deleteme\test.docx")
$sel = $word.Selection
$paras = $doc.Paragraphs

$path = "D:\deleteme\words.txt"

foreach ($para in $paras)
{
$para.Range.Text | Out-File -FilePath $path -Append
}

<h1>Buscar todas las palabras en mayúsculas 🙁 Todo funciona excepto esto. Quiero extraer todas las palabras en mayúsculas</h1>

$capwords = Get-Content $path | Select-string -pattern "/\b[A-Z]+\b/g"
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con la expresión regular en la última línea de código es que incluye barras inclinadas hacia adelante, las cuales no forman parte de la sintaxis del patrón en PowerShell. Además, la bandera “g” para buscar globalmente no es necesaria en este contexto.

    Para extraer todas las palabras en mayúsculas de un documento usando PowerShell, utiliza el siguiente código:

    #Extraer contenido de un documento de Microsoft Word a texto
    $word = New-Object -comobject Word.Application
    $word.Visible = $True 
    $doc = $word.Documents.Open("D:\Deleteme\test.docx") 
    $sel = $word.Selection
    $paras = $doc.Paragraphs
    
    $path = "D:\deleteme\words.txt"
    
    foreach ($para in $paras) 
    { 
        #Convertir el texto a mayúsculas y separarlo en palabras
        $words = $para.Range.Text.ToUpper() -split '\W'
    
        #Seleccionar solo las palabras que están completamente en mayúsculas
        $capwords = $words | Where-Object {$_ -match '^[A-Z]+$'}
    
        #Agregar las palabras en mayúsculas al archivo de salida
        Add-Content -Path $path -Value $capwords
    }
    

    Este código convierte todo el texto a mayúsculas, lo separa en palabras individuales utilizando el patrón de expresión regular ‘\W’ (que coincide con cualquier carácter que no sea una palabra), selecciona solo aquellas palabras que están completamente en mayúsculas utilizando el patrón de expresión regular ‘^[A-Z]+$’, y las escribe en un archivo utilizando el cmdlet Add-Content.

Comments are closed.