web-dev-qa-db-fra.com

Regex: ignorer la sensibilité à la casse

Comment faire en sorte que la regex suivante ignore la sensibilité à la casse? Il doit correspondre à tous les caractères corrects mais ignorer s'ils sont inférieurs ou majuscules.

G[a-b].*
203
brother

En supposant que vous souhaitiez que la regex whole ignore la casse, vous devriez rechercher le drapeau i . Presque tous les moteurs de regex le supportent:

/G[a-b].*/i

string.match("G[a-b].*", "i")

Consultez la documentation de votre langue/plate-forme/outil pour savoir comment les modes correspondants sont spécifiés.

Si vous voulez que seule partie de la regex soit insensible à la casse (comme le supposait ma réponse originale), vous avez deux options:

  1. Utilisez les modificateurs de mode (?i) et [facultativement] (?-i):

    (?i)G[a-b](?-i).*
    
  2. Mettez toutes les variantes (c'est-à-dire 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 utilisez des caractères Unicode autres que ASCII, vérifiez si votre moteur regex les prend en charge correctement.

296
mgibsonbr

Dépend de la mise en œuvre Mais je voudrais utiliser

(?i)G[a-b].

VARIATIONS: 

(?i) case-insensitive mode ON    
(?-i) case-insensitive mode OFF

Les saveurs de 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 la regex, celui-ci ne s'applique qu'à la partie de la regex située à droite du modificateur. Avec ces variantes, vous pouvez désactiver les modes en les précédant d’un signe moins (? -I). 

La description est tirée de la page: https://www.regular-expressions.info/modifiers.html

97
elrado

L'indicateur i est normalement utilisé pour l'insensibilité à la casse. Vous ne donnez pas de langue ici, mais ce sera probablement quelque chose comme /G[a-b].*/i.

45
chooban

expression régulière pour valider 'abc' sans tenir compte de la casse 

(?i)(abc)
40
Ravinath

Juste pour être complet, je voulais ajouter la solution pour les expressions régulières en C++ avec Unicode:

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);

if (std::tr1::regex_match(szString, pattern))
{
...
}
14
Frankenstein

Comme je l'ai découvert à partir de ce message similaire ( ignorecase dans AWK ), sur les anciennes versions de awk (telles que sur Vanilla Mac OS X), il peut être nécessaire d'utiliser 'tolower($0) ~ /pattern/'

IGNORECASE ou (?i) ou /pattern/i générera une erreur ou renverra true pour chaque ligne.

3
senortim

[gG] [aAbB]. * probablement une solution simple si le motif n'est pas trop compliqué ou long.

1
alpha_989

Vous pouvez également diriger votre chaîne initiale, que vous allez vérifier pour la correspondance de modèle, en minuscule. Et en utilisant dans votre modèle, les symboles minuscules, respectivement.

0

Ajout aux réponses déjà acceptées:

Grep utilisation:

Notez que pour greping, il s'agit simplement de l'ajout du modificateur -i. Ex: grep -rni regular_expression pour rechercher cette 'expression_régulière', 'r'économiquement, la casse' étant insensible, la ligne 'représentant des nombres' ne figurant 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.

 enter image description here

Références:

0
Gabriel Staples

C #

using System.Text.RegularExpressions;
...    
Regex.Match(
    input: "Check This String",
    pattern: "Regex Pattern",
    options: RegexOptions.IgnoreCase)

spécifiquement: options: RegexOptions.IgnoreCase

0
DonkeyKong