Comment puis-je faire ignorer la sensibilité à la casse de l'expression rationnelle suivante? Il doit correspondre à tous les caractères corrects mais ignorer s'ils sont inférieurs ou en majuscules.
Notez que pour grepcela, c'est simplement l'ajout du -imodificateur. Ex: grep -rni regular_expressionpour rechercher cette 'expression_régulière' 'r' de manière récursive, la casse 'i'nsensitive, montrant la ligne' n'abrite pas dans le résultat.
Gabriel Staples
Réponses:
444
En supposant que vous voulez que toute l' expression régulière ignore la casse, vous devez rechercher le idrapeau . Presque tous les moteurs regex le supportent:
/G[a-b].*/i
string.match("G[a-b].*","i")
Consultez la documentation de votre langue / plateforme / outil pour savoir comment les modes de correspondance sont spécifiés.
Si vous voulez qu'une partie seulement de l'expression rationnelle soit insensible à la casse (comme le supposait ma réponse d'origine), vous avez deux options:
Utilisez les modificateurs de mode (?i)et [facultativement] (?-i):
(?i)G[a-b](?-i).*
Mettez toutes les variations (c.-à-d. Minuscules et majuscules) dans l'expression régulière - utile si les modificateurs de mode ne sont pas pris en charge:
[gG][a-bA-B].*
Une dernière remarque: si vous avez affaire à des caractères Unicode en plus de l'ASCII, vérifiez si votre moteur regex les prend correctement en charge.
Brillant! Fonctionne pour: perl -pe 's / ^ utf-8 \? B \?. * $ // gi' Cancer.1631, correspondant / remplaçant la chaîne "UTF-8? B?" dans le dossier Cancer.1631. Cela échoue: perl -pe 's / ^ utf-8 \? B \?. * $ // g' Cancer.1631, en raison de la non-concordance des cas.
Victoria Stuart
Ce message serait beaucoup plus clair s'il ne s'agissait pas d'un exemple aussi précis. Comme si vous vouliez ignorer la casse pour un autre mot tel que ".txt" et ".TXT". En regardant cette réponse, je ne sais toujours pas comment je pourrais le faire.
Kyle Bridenstine
Pour une raison quelconque, l'expression régulière que vous avez publiée ne fonctionne pas dans findl'expression régulière étendue .. par exemple, find . \( -type d -regextype posix-extended -regex '/./[a-c][^.]*/i' \)n'affiche aucun dossier .. blanc un enregistrement similaire find . \( -type d -regextype posix-extended -regex './[a-c][^.]*' \)sans les modificateurs affiche les dossiers corrects. Une idée pourquoi?
alpha_989
Ici, j'essaie de trouver tous les dossiers commençant par des caractères [a-c]dans le dossier actuel uniquement .. pour faire un peu plus de manipulation ..
alpha_989
Honnêtement, je mettrais l'option 2 dans la partie principale de la réponse car elle est générique et fonctionne avec tous les moteurs regex.
Puterdo Borato
155
Dépend de la mise en œuvre mais j'utiliserais
(?i)G[a-b].
VARIATIONS:
(?i)case-insensitive mode ON
(?-i)case-insensitive mode OFF
Les saveurs regex modernes vous permettent d'appliquer des modificateurs à une partie seulement de l'expression régulière. Si vous insérez le modificateur (? Im) au milieu de l'expression régulière, le modificateur s'applique uniquement à la partie de l'expression régulière à droite du modificateur. Avec ces saveurs, vous pouvez désactiver les modes en les précédant d'un signe moins (? -I).
Il s'agit du format de modification du moteur d'expression rationnelle de TortoiseHg.
mwolfe02
Pourriez-vous me dire comment cela peut être réalisé dans le shell Linux (par exemple dans egrep sans utiliser le commutateur "-i") de manière générique?
Krishna Gupta
1
Expliquer ce que cela (?i)fait et comment y mettre fin ( (?-i)) aurait été très utile. C'est pourquoi votre réponse a 1/3 autant de votes que la question n ° 1 au lieu de presque autant, car ils expliquent ce détail subtil.
Gabriel Staples
55
expression régulière pour valider 'abc' en ignorant la casse
Fonctionne parfaitement avec Android Studio logcat
Joe
Fonctionne aussi en python
conner.xyz
47
L' iindicateur est normalement utilisé pour l'insensibilité à la casse. Vous ne donnez pas de langue ici, mais ce sera probablement quelque chose comme /G[ab].*/iou /(?i)G[ab].*/.
Quelqu'un peut-il m'expliquer pourquoi ce message a été rejeté? La solution acceptée utilise du code spécifique et par souci d'exhaustivité j'ai voulu ajouter la solution pour les bibliothèques standard du langage c ++. À mon avis, j'ai généré une valeur ajoutée à une question plus générale.
Frankenstein
5
Comme je l'ai découvert à partir de ce post similaire ( ignorecase dans AWK ), sur les anciennes versions de awk (comme sur vanilla Mac OS X), vous devrez peut-être utiliser 'tolower($0) ~ /pattern/'.
IGNORECASEou (?i)ou /pattern/igénérera une erreur ou retournera vrai pour chaque ligne.
aimerait savoir pourquoi cette réponse est fausse pour la question donnée?
alpha_989
Vous l'avez dans votre réponse "n'est pas trop compliqué ou long"
reggaeguitar
C'est en fait la seule solution qui a fonctionné pour mon cas. Cela ressemble également à la solution la plus générique qui devrait fonctionner partout. Toutes les autres réponses semblent être très spécifiques pour des implémentations regex particulières.
Puterdo Borato
1
Ajout aux réponses déjà acceptées:
Utilisation de grep:
Notez que pour grepcela, c'est simplement l'ajout du -imodificateur. Ex: grep -rni regular_expressionpour rechercher cette 'expression_régulière' 'r' de manière récursive, la casse 'i'nsensitive, montrant la ligne' n'abrite pas dans le résultat.
En outre, voici un excellent outil pour vérifier les expressions régulières: https://regex101.com/
Ex: Voir l'expression et l'explication dans cette image.
Vous pouvez pratiquer Regex dans Visual Studio et Visual Studio Code à l'aide de find / replace.
Vous devez sélectionner à la fois Match Case et Expressions régulières pour les expressions regex avec case. Sinon [AZ] ne fonctionnera pas. Entrez la description de l'image ici
Vous pouvez également diriger votre chaîne initiale, dont vous allez vérifier la correspondance des motifs, en minuscules. Et en utilisant dans votre modèle des symboles en minuscules respectivement.
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
.grep
cela, c'est simplement l'ajout du-i
modificateur. Ex:grep -rni regular_expression
pour rechercher cette 'expression_régulière' 'r' de manière récursive, la casse 'i'nsensitive, montrant la ligne' n'abrite pas dans le résultat.Réponses:
En supposant que vous voulez que toute l' expression régulière ignore la casse, vous devez rechercher le
i
drapeau . Presque tous les moteurs regex le supportent:Consultez la documentation de votre langue / plateforme / outil pour savoir comment les modes de correspondance sont spécifiés.
Si vous voulez qu'une partie seulement de l'expression rationnelle soit insensible à la casse (comme le supposait ma réponse d'origine), vous avez deux options:
Utilisez les modificateurs de mode
(?i)
et [facultativement](?-i)
:Mettez toutes les variations (c.-à-d. Minuscules et majuscules) dans l'expression régulière - utile si les modificateurs de mode ne sont pas pris en charge:
Une dernière remarque: si vous avez affaire à des caractères Unicode en plus de l'ASCII, vérifiez si votre moteur regex les prend correctement en charge.
la source
find
l'expression régulière étendue .. par exemple,find . \( -type d -regextype posix-extended -regex '/./[a-c][^.]*/i' \)
n'affiche aucun dossier .. blanc un enregistrement similairefind . \( -type d -regextype posix-extended -regex './[a-c][^.]*' \)
sans les modificateurs affiche les dossiers corrects. Une idée pourquoi?[a-c]
dans le dossier actuel uniquement .. pour faire un peu plus de manipulation ..Dépend de la mise en œuvre mais j'utiliserais
VARIATIONS:
Les saveurs regex modernes vous permettent d'appliquer des modificateurs à une partie seulement de l'expression régulière. Si vous insérez le modificateur (? Im) au milieu de l'expression régulière, le modificateur s'applique uniquement à la partie de l'expression régulière à droite du modificateur. Avec ces saveurs, vous pouvez désactiver les modes en les précédant d'un signe moins (? -I).
La description provient de la page: https://www.regular-expressions.info/modifiers.html
la source
(?i)
fait et comment y mettre fin ((?-i)
) aurait été très utile. C'est pourquoi votre réponse a 1/3 autant de votes que la question n ° 1 au lieu de presque autant, car ils expliquent ce détail subtil.expression régulière pour valider 'abc' en ignorant la casse
la source
L'
i
indicateur est normalement utilisé pour l'insensibilité à la casse. Vous ne donnez pas de langue ici, mais ce sera probablement quelque chose comme/G[ab].*/i
ou/(?i)G[ab].*/
.la source
Par souci d'exhaustivité, je voulais ajouter la solution pour les expressions régulières en C ++ avec Unicode:
la source
Comme je l'ai découvert à partir de ce post similaire ( ignorecase dans AWK ), sur les anciennes versions de awk (comme sur vanilla Mac OS X), vous devrez peut-être utiliser
'tolower($0) ~ /pattern/'
.IGNORECASE
ou(?i)
ou/pattern/i
générera une erreur ou retournera vrai pour chaque ligne.la source
C #
spécifiquement: options: RegexOptions.IgnoreCase
la source
[gG] [aAbB]. * solution probablement simple si le motif n'est pas trop compliqué ou trop long.
la source
Ajout aux réponses déjà acceptées:
Utilisation de grep:
Notez que pour
grep
cela, c'est simplement l'ajout du-i
modificateur. Ex:grep -rni regular_expression
pour rechercher cette 'expression_régulière' 'r' de manière récursive, la casse 'i'nsensitive, montrant la ligne' n'abrite pas dans le résultat.En outre, voici un excellent outil pour vérifier les expressions régulières: https://regex101.com/
Ex: Voir l'expression et l'explication dans cette image.
Références:
man grep
)la source
En Java, le
Regex
constructeur aDonc, pour ignorer les cas, utilisez
la source
Vous pouvez pratiquer Regex dans Visual Studio et Visual Studio Code à l'aide de find / replace.
Vous devez sélectionner à la fois Match Case et Expressions régulières pour les expressions regex avec case. Sinon [AZ] ne fonctionnera pas. Entrez la description de l'image ici
la source
Vous pouvez également diriger votre chaîne initiale, dont vous allez vérifier la correspondance des motifs, en minuscules. Et en utilisant dans votre modèle des symboles en minuscules respectivement.
la source