2008-09-02 20 views
4

Voici une technique de regex de base que je n'ai jamais réussi à retenir. Disons que j'utilise une implémentation regex assez générique (par exemple, grep ou grep -E). Si je devais faire une liste de fichiers et de faire correspondre n'importe quelle fin à .sty ou .cls, comment ferais-je cela?Regex pour faire correspondre des sous-chaînes uniques

Répondre

4
ls | grep -E "\.(sty|cls)$" 
  • \. matchs littéralement "." - un . correspond à tout caractère non échappés
  • (sty|cls) - Match "sty" ou "cls" - le | est un or et les parenthèses limitent l'expression.
  • $ force le match soit à la fin de la ligne

Notez que vous voulez grep -E ou egrep, pas grep -e comme c'est une autre option pour les listes de modèles.

2
egrep "\.sty$|\.cls$" 
2

Ce regex.
\ (sty | CCRS) \ z
correspond à tout chaîne se termine par .sty ou .cls
EDIT:
pour grep \ z doit être remplacé par $ ie \. (sty | cls) $ comme jelovirt suggéré.