Regex para cercar cada palavra que contenha & com $… $

1

Estou pensando o que é uma abordagem robusta para isso.

Tento corresponder sem sucesso por:

[A-Za-z]*&[A-Za-z]*

Que retorna:

então o erro em \&\hskip environment.

Como você pode combinar melhor a marca & de letras alfabéticas?

    
por Léo Léopold Hertz 준영 23.05.2015 / 17:19

2 respostas

2

Como @cuonglm disse, * significa 0 ou mais. Desde que você marcou isto com Perl, eu suponho que você esteja usando o motor regex do Perl, o que significa que você pode usar + : 1 ou mais. Então, a substituição que você procura seria uma das seguintes:

  1. Corresponda caracteres alfanuméricos ou sublinhados:

    s/\w+&\w+/\$$&\$/g
    
  2. Corresponder somente letras (observe o i , o que torna o caso insensitivo):

    s/[a-z]+&[a-z]+/\$$&\$/gi
    
  3. Corresponda apenas as "palavras", verifique se a palavra inteira contém apenas letras:

    s/\b[a-z]+&[a-z]+\b/\$$&\$/gi
    
por 23.05.2015 / 17:49
0

Seu problema é * modifier, ele corresponde a zero ou mais ocorrências de caracteres. Portanto, ele corresponderá a & , que não está cercado por [A-Za-z] .

Você só precisa de:

[A-Za-z]&[A-Za-z]

ou melhor:

[[:alpha:]]&[[:alpha:]]
    
por 23.05.2015 / 17:26