Non sono sicuro che le espressioni regolari siano la soluzione migliore qui, ma sembrano abbastanza logiche; Non sono sicuro di come implementarlo.Best practice: corrispondenza parziale con Regex
Fondamentalmente, voglio che il mio utente sia in grado di digitare un nome di metodo e averlo analizzato per la validità dopo ogni immissione di caratteri. Ho definito un formato di funzione valido come regex ed è abbastanza semplice verificare se i due corrispondono. Il guaio è che vorrei essere in grado di eseguire una corrispondenza parziale, in modo da far sapere all'utente: "Finora, questo è valido".
Ad esempio,
+(NSString *)thisIsAValid:(ObjectiveC *)method;
è un metodo valido. Può essere abbinato a una semplice stringa regolare come
[\+-]\(w+\s*\*?\)\w+....etc...
. Ma mi piacerebbe essere in grado di avere la stessa stringa regex "match"
+(NSStr
(che mi rendo conto che è una sorta di cammino a ritroso di utilizzo di espressioni regolari). Non vorrei ancora voglia l'espressione regolare per abbinare
Q)(NStr
C'è un modo per implementare qualcosa di simile con le funzioni regex standard, oppure avrei dovuto fare qualcosa di più drastico?
Grazie mille! Voi ragazzi siete inestimabili.
Dopo ulteriore riflessione, suppongo avrei potuto fare la mia domanda un po 'più chiaro (così come un po' di più succinta): Normalmente, si utilizza una regex per cercare un modello in testo. In altre parole, quante volte "cat" o "lettino" appaiono in questo paragrafo. Vorrei fare il contrario, cercare una stringa "in" una regex. Cioè, quanta parte di questa stringa, a partire dall'inizio, corrisponde a questa regex. In definitiva, vorrei restituire l'indice in base al quale la stringa smette di corrispondere alla regex in questione.
Sembra che il vostro vero obiettivo è quello di avere una regex per un modello che è sicuramente valida * *, e quindi per innescare un errore quando quel modello è abbinato. Quindi potresti voler confrontare il complemento del linguaggio. Nota che il complemento di una lingua normale può essere o non essere regolare! –
Lungo queste linee, suggerisco di provare a trovare una buona descrizione della grammatica Objective-C (probabilmente una grammatica context-free) e vedere quanto si può confrontare con il complemento della regola di dichiarazione del metodo con regex. –
+1 per una domanda interessante però!:-) –