Regex: hoofdlettergevoeligheid negeren

Hoe kan ik ervoor zorgen dat de volgende regex hoofdlettergevoeligheid negeert? Het moet overeenkomen met alle juiste tekens, maar negeert of het kleine of hoofdletters zijn.

G[a-b].*

Antwoord 1, autoriteit 100%

Ervan uitgaande dat u wilt dat de heleregex hoofdletters negeert, moet u zoeken naar de imarkeer. Bijna alle regex-engines ondersteunen het:

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

Controleer de documentatie voor uw taal/platform/tool ​​om te zien hoe de overeenkomende modi worden gespecificeerd.

Als je wilt dat slechts een deelvan de regex hoofdletterongevoelig is (zoals mijn oorspronkelijke antwoord veronderstelde), dan heb je twee opties:

  1. Gebruik de (?i)en [optioneel] (?-i)modusmodifiers:

    (?i)G[a-b](?-i).*
    
  2. Zet alle variaties (d.w.z. kleine letters en hoofdletters) in de regex – handig als modusmodifiers niet worden ondersteund:

    [gG][a-bA-B].*
    

Nog een laatste opmerking: als je te maken hebt met Unicode-tekens naast ASCII, controleer dan of je regex-engine ze goed ondersteunt.


Antwoord 2, autoriteit 37%

Afhankelijk van implementatie
maar ik zou gebruiken

(?i)G[a-b].

VARIATIES:

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

Met moderne regex-smaken kun je modifiers toepassen op slechts een deel van de reguliere expressie. Als je de modifier (?im) in het midden van de regex plaatst, dan is de modifier alleen van toepassing op het deel van de regex rechts van de modifier. Met deze smaken kunt u modi uitschakelen door ze vooraf te laten gaan door een minteken (?-i).

Beschrijving komt van de pagina:
https://www.regular-expressions.info/modifiers.html


Antwoord 3, autoriteit 12%

reguliere expressie voor het valideren van ‘abc’ waarbij hoofdlettergevoelig wordt genegeerd

(?i)(abc)

Antwoord 4, autoriteit 9%

De vlag iwordt normaal gesproken gebruikt voor hoofdletterongevoeligheid. Je geeft hier geen taal op, maar het zal waarschijnlijk zoiets zijn als /G[ab].*/iof /(?i)G[ab].*/.


Antwoord 5, autoriteit 3%

Voor de volledigheid wilde ik de oplossing voor reguliere expressies in C++ met Unicode toevoegen:

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);
if (std::tr1::regex_match(szString, pattern))
{
...
}

Antwoord 6

Zoals ik ontdekte uit dit vergelijkbare bericht (ignorecase in AWK), op oude versies van awk (zoals op vanilla Mac OS X), moet u mogelijk 'tolower($0) ~ /pattern/'gebruiken.

IGNORECASEof (?i)of /pattern/igenereren een fout of retourneren true voor elke regel.


Antwoord 7

C#

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

specifiek: opties: RegexOptions.IgnoreCase


Antwoord 8

[gG][aAbB].* waarschijnlijk een eenvoudige oplossing als het patroon niet te ingewikkeld of te lang is.


Antwoord 9

Aanvulling op de reeds geaccepteerde antwoorden:

Greep-gebruik:

Merk op dat voor greping het simpelweg de toevoeging is van de -imodifier. Bijv.: grep -rni regular_expressionom te zoeken naar deze ‘regular_expression’ ‘r’ecursively, case ‘i’nsensitive, met regel ‘n’umbers in het resultaat.

Hier is ook een geweldige tool voor het verifiëren van reguliere expressies: https://regex101.com/

Bijvoorbeeld: zie de uitdrukking en uitleg in deze afbeelding.

voer hier de afbeeldingsbeschrijving in

Referenties:


Antwoord 10

JavaScript

Als u het hoofdletterongevoelig wilt maken, voegt u gewoon itoe aan het einde van de regex:

'Test'.match(/[A-Z]/gi)//Returns [“T”, “e”, “s”, “t”]

Zonder i

'Test'.match(/[A-Z]/g)//Returns [“T”]


Antwoord 11

In JavaScript moet u de vlag idoorgeven aan de RegExp-constructor zoals vermeld in MDN:

const regex = new RegExp('(abc)', 'i');
regex.test('ABc'); // true

Antwoord 12

In Java heeft de Regex-constructor

Regex(String pattern, RegexOption option)

Dus om gevallen te negeren, gebruik

option = RegexOption.IGNORE_CASE

Antwoord 13

U kunt ook uw eerste tekenreeks, die u gaat controleren op patroonovereenkomst, naar kleine letters leiden. En gebruik in uw patroon respectievelijk kleine letters.


Antwoord 14

Je kunt Regex oefenen in Visual Studio en Visual Studio Code met zoeken/vervangen.

U moet zowel Hoofdletters als reguliere expressies selecteren voor regex-expressies met hoofdletters. Anders werkt [A-Z] niet.Voer hier de afbeeldingsbeschrijving in

visual studio 2019-community

Other episodes