Expressão regular para corresponder a zero ou mais espaços no Microsoft Word

4

Espero que esteja perdendo o óbvio aqui, mas como no mundo eu combina zero ou mais espaços com o mecanismo "Regex" do Microsoft Word 2010?

Como um exemplo tolo, quero combinar todos os itens a seguir em um grupo de captura:

cowseat grass
cows eat grass
cows  eat grass
cows   eat grass
cows    eat grass

Normalmente, faço (cows\s*eat grass) e termino com isso. Mas não consigo ver como combinar zero ou mais espaços. Eu quero capturar toda a frase em um grupo de captura, mas eu tenho um número variável de espaços.

Eu tenho usado este documento como referência.

    
por kmort 13.01.2014 / 21:08

1 resposta

7

O documento que você vinculou mostra que as "expressões regulares" da Microsoft não são expressões regulares; eles são um híbrido bizarro (filho bastardo, ao contrário) de globbing estilo shell ( link ) e expressões regulares verdadeiras.

Como a sintaxe glob faz uso do caractere * como sinônimo de regex .* , e a Microsoft decidiu (como mencionado em um comentário) tornar @ equivalente ao quantificador de regex + em vez de * (o que é estúpido, pois a+ é equivalente a aa* para qualquer átomo a , tornando + desnecessário), parece que você está sem sorte.

Minha opinião pessoal é que (1) isso é estúpido e (2) chamar esses padrões de "expressões regulares" é enganoso na melhor das hipóteses, mas infelizmente não vejo nenhuma maneira de contornar isso exceto por abandonar o Word em favor de uma ferramenta que suporta corretamente o regex. (Embora eu suponha, em teoria, você poderia tentar analisar o formato xml-ish do próprio arquivo docx, extrair o texto, e então aplicar sua regex ...)

    
por 13.01.2014 / 21:58