Regex: ignora la sensibilità alle maiuscole e alle minuscole

Come posso fare in modo che la seguente regex ignori la sensibilità alle maiuscole e alle minuscole? Dovrebbe corrispondere a tutti i caratteri corretti ma ignorare se sono minuscoli o maiuscoli.

G[a-b].*
Soluzione

Supponendo che vogliate che la intera regex ignori il caso, dovreste cercare il flag i. Quasi tutti i motori regex lo supportano:

/G[a-b].*/i

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

Controllate la documentazione della vostra lingua/piattaforma/strumento per trovare come sono specificate le modalità di corrispondenza.

Se vuoi che solo parte della regex sia insensibile alle maiuscole e alle minuscole (come presumeva la mia risposta originale), allora hai due opzioni:

  1. Usare i modificatori di modalità (?i) e [opzionalmente] (?-i):

     (?i)G[a-b](?-i).*
  2. Metti tutte le varianti (cioè minuscole e maiuscole) nella regex - utile se i modificatori di modalità non sono supportati:

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

Un'ultima nota: se avete a che fare con caratteri Unicode oltre all'ASCII, controllate se il vostro motore regex li supporta correttamente o meno.

Commentari (4)

Dipende dall'implementazione ma io userei

(?i)G[a-b].

VARIAZIONI:

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

Le moderne regex permettono di applicare i modificatori solo ad una parte dell'espressione regolare. Se inserite il modificatore (?im) nel mezzo della regex, allora il modificatore si applica solo alla parte della regex a destra del modificatore. Con questi modificatori, puoi disattivare i modificatori facendoli precedere da un segno meno (?-i).

La descrizione è tratta dalla pagina: https://www.regular-expressions.info/modifiers.html

Commentari (4)

Il flag i è normalmente usato per l'insensibilità al caso. Non si dà una lingua qui, ma probabilmente sarà qualcosa come /G[ab].*/i o /(?i)G[ab].*/.

Commentari (0)