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 symbolporrevers matchdo 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[^)]*'