Come abbinare il simbolo in regexp?


9

Sto cercando di costruire un'espressione regolare che corrisponda a simboli, vale a dire cose come nomi di funzioni e simili, in base alle attuali impostazioni della modalità principale (si chiama tabella della sintassi se ricordo correttamente). Dopo alcune indagini, ho trovato queste utili regexps:

  • \_< corrisponde all'inizio di un simbolo

  • \_> corrisponde alla fine di un simbolo

Ora penso di aver bisogno di scoprire come rappresentare il carattere costitutivo del simbolo. Abbiamo \wcaratteri costituenti parole, ma non riesco a trovare nulla per i simboli. Regexp per abbinare i simboli dovrebbe essere qualcosa del genere (supponendo che \scorrisponda ai caratteri costituenti il ​​simbolo):

\_<\s+\_>

Mi sto perdendo qualcosa? Come abbinare i simboli?


Nota che la corrispondenza delle parole non funziona per me. L'esempio fondamentale è qualcosa di simile a foo-barun simbolo in modalità Emacs Lisp, ma non una parola (perché -non è un carattere costituente una parola).


3
Io di solito uso (re-search-forward "\\_<\\(?:\\sw\\|\\s_\\)+\\_>" nil t). Funziona, ma mi chiedo se c'è un modo più breve.
a bordo del

2
ABO-ABO: Ugly come è, per quanto ne so che è quello che devi fare, date simboli possono contenere entrambi i personaggi simbolo-costituenti e personaggi word-costituenti. Dovresti farne una risposta. Mark, vorrai controllare il manuale per vedere cosa \ssignifica effettivamente, poiché è completamente diverso dal tuo presupposto.
phils,

@phils, non sapevo nemmeno che \savesse un significato nelle regexps di Emacs, ho appena scelto quel simbolo per esempio.
Mark Karpov,

@Mark: consultare il manuale Elisp, nodo Regexp Backslash .
Estratto il

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.