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].*
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:
Usare i modificatori di modalità (?i)
e [opzionalmente] (?-i)
:
(?i)G[a-b](?-i).*
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.
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