regex pour un caractère ou d'une autre?
Je suis à la recherche de regex code qui liste toutes les lignes qui contiennent un a OU un i.
J'ai essayé ceci:
grep -E '[(a|i)]{1}' testFile.txt
mais cela me donne les mots contenant un ou je et les mots qui contiennent un fr je.
Quel est le problème?
- que faire si vous essayez .*(a|i).*
- Pour l'enregistrement, la regex pour "un ou i (ou les deux)" est tout simplement
[ai]
--grep
fera rapport un match de n'importe où sur une ligne, donc vous n'avez pas besoin de leader ou suiveur des caractères génériques. - Si il peut y avoir rien d'autre sur la ligne,
grep '^[ai]$' file
ougrep -Fx -e a -e i file
. - Le fichier contient les lettres grecques. La regex doit afficher par exemple: la bêta, mais il NE peut montrer par exemple iota, parce que ce mot contient à la fois un je et un un
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec:
beta
(seula
), mais pasalfa
(a
s'est produite deux fois dans la chaîne) ouiota
(les deuxa
eti
) - j'ai vérifié juste maintenant{1}
est complètement redondant. Le(a|i)
peut ainsi être exprimé avec une classe de caractères[ai]
dans ce cas, vous n'avez pas besoin de la-E
option.Si vous voulez un OU exclusif ensuite, essayez ceci:
grep -E '^[^i]*a[^i]*$|^[^a]*i[^a]*$'