2014-07-09 18 views
14

Sto cercando di creare una query regex senza distinzione tra maiuscole e minuscole in Google Spreadsheets con la funzione regexreplace. È possibile? Ho provato il flag \ i e ottenuto un errore #REF dicendo che l'espressione non era valida: = regexreplace ("Test", "t \ i", "") restituisce un errore quando spero di ottenere "es" come risultato finale.Fogli di lavoro Google Regex Case Insensitive (Regexreplace)

È possibile? C'è una bandiera per la distinzione tra maiuscole e minuscole in Google Spreadsheets?

Grazie in anticipo!

+0

non ero nemmeno a conoscenza che avevano aggiunto regex per Google Spreadsheets – RevanProdigalKnight

+0

Si consiglia di spostare il segno di spunta alla [risposta corretta] (http://stackoverflow.com/a/29094096) –

risposta

19

AFAIK, l'unico modo per abilitare la corrispondenza senza distinzione tra maiuscole e minuscole è l'API JavaScript in Google Documenti.

A quanto pare, RE2 sintassi supporta l'inline (?i) modificatore insensitive caso-:

=REGEXREPLACE("Test", "(?i)t", "") 

Un'alternativa che lavorerà sta utilizzando una classe di caratteri, aggiungendo entrambi i casi della lettera T ..

=REGEXREPLACE("Test", "[Tt]", "") 
+0

+1 per soluzioni semplici. – zx81

+2

Fogli Google consente specifici regex, tra cui 'i' per insensibilità al maiuscolo/minuscolo. Vedi [la risposta di Alexander Ivanov] (http://stackoverflow.com/a/29094096/445295). –

+0

[re2 supporta (?i) flag] (https://github.com/google/re2/blob/master/doc/syntax.txt), considera l'aggiornamento della risposta poiché si trova qui come accettata. –

-2

Nessun flag per maiuscole e minuscole Se si dispone di una stringa più lunga e si desidera renderlo maiuscolo prova a usare un'espressione regolare minuscola e fai in modo che il tuo test stampi la funzione in basso: = REGEXREPLACE (LOWER (stringa), regex_in_lowercase, sostituzione) nel tuo caso specifico: = REGEXREPLACE (LOWER ("test"), " t "," ") Il problema è che un'espressione di acquisizione è in minuscolo! fonte: https://productforums.google.com/forum/#!topic/docs/7kNb9LGeIfM

+1

Quanto sopra potrebbe essere stato vero in passato, ma non lo è ora. Per essere chiari, quanto sopra non è corretto - c'è un flag per l'insensibilità del case e funziona come si vorrebbe sperare - basato sul testare effettivamente quanto segue: "(? I) SOMESTRING" corrisponde a tutti "SOMESTRING", "SomeString", " Somestring "," somestring ". –

11

ho trovato questo:

=REGEXREPLACE("Test","(?i)t","") 

Esso restituisce ciò che si vuole

es 

google/re2

+1

Funziona perché stai aggiungendo un flag alla tua espressione regolare. La bandiera "i" indica la corrispondenza senza distinzione tra maiuscole e minuscole, pertanto corrisponderà a qualsiasi lettera minuscola o maiuscola. Vedere https://github.com/google/re2/blob/master/doc/syntax.txt – rodowi

2

Come scrive Alexander Ivanov,

Sì, sono a conoscenza del fatto che questo argomento è stato risolto. Ma ho trovato qualcosa di stravagante!

= REGEXREPLACE ("Test", "(? I) t", "") Restituisce ciò che si vuole

es

P.S .: Per favore, se qualcuno sa perché funziona poi commentare.

Google utilizza il proprio motore di espressioni regolari re2. Utilizzando (? I) sta permettendo di impostare i flag per il caso ricerca maiuscole https://re2.googlecode.com/hg/doc/syntax.html