Regex: ignoruje citlivosť na veľkosť písmen

Ako môžem zabezpečiť, aby nasledujúci regex ignoroval citlivosť na veľkosť písmen? Mal by sa zhodovať so všetkými správnymi znakmi, ale ignorovať, či sú to malé alebo veľké písmená.

G[a-b].*
Riešenie

Za predpokladu, že chcete, aby celý regex ignoroval veľkosť písmen, mali by ste hľadať príznak i. Podporujú ho takmer všetky regexové motory:

/G[a-b].*/i

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

Pozrite si dokumentáciu k vášmu jazyku/platforme/nástroju, aby ste zistili, ako sa určujú režimy porovnávania.

Ak chcete, aby len časti regexu nerozlišovali veľké a malé písmená (ako predpokladala moja pôvodná odpoveď), potom máte dve možnosti:

  1. Použite modifikátory režimu (?i) a [voliteľne] (?-i):

     (?i)G[a-b](?-i).*
  2. Do regexu vložte všetky varianty (t. j. malé a veľké písmená) - užitočné, ak modifikátory režimu nie sú podporované:

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

Posledná poznámka: ak'pracujete so znakmi Unicode okrem ASCII, skontrolujte, či ich váš regex engine správne podporuje.

Komentáre (4)

Závisí od implementácie ale ja by som použil

(?i)G[a-b].

VARIANTY:

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

Moderné varianty regexu umožňujú aplikovať modifikátory len na časť regulárneho výrazu. Ak vložíte modifikátor (?im) do stredu regexu, potom sa modifikátor aplikuje len na časť regexu napravo od modifikátora. Pomocou týchto príznakov môžete vypnúť mody tak, že pred nimi uvediete znamienko mínus (?-i).

Popis je zo stránky: https://www.regular-expressions.info/modifiers.html

Komentáre (4)

Príznak i sa zvyčajne používa na rozlišovanie veľkých a malých písmen. Neuvádzate tu jazyk, ale pravdepodobne to bude niečo ako /G[ab].*/i alebo /(?i)G[ab].*/.

Komentáre (0)