Por favor, note que a expressão tenta escolher o padrão de correspondência máximo comprimento ( gready regex
). Como você vê no seu exemplo (regex: símbolos entre parênteses), escolhai
- ... é ( test.com) e (alex )
em vez de
- ... é ( test.com ) e ( alex ) .
Existem duas maneiras de substituir esse comportamento:
- Substitua
any symbol
porrevers match
do limite ou deduza o símbolo (por exemplo:(.*)
por([^)]*)
- Expressões regulares modernas (PCRE, por exemplo) permitem que um quantificador seja especificado como preguiçoso . Eles colocam um ponto de interrogação após o quantificador para torná-lo preguiçoso
.*?
. Usando um quantificador lento, a expressão tenta a correspondência mínima primeiro.
Mais da primeira variante permite simplificar a regex: grep -Po '\(\K[^)]*'