2013-08-30 16 views
7

Sto guardando attraverso un codice idrodinamico molto grande in c che ha, spesso, alcune scelte di variabili molto povere. Compresa una variabile globale denominata solo 'g'. Allo stesso modo, c'è un file con una variabile chiamata 'geom' e molte altre variabili che contengono la sottostringa 'geom' (ad esempio geometria, geomAL, geom_arb, ecc.).Emacs cerca con esattezza l'espressione regolare invece di parziale

C'è un modo per cercare le variabili che corrispondono esattamente a un'espressione regolare, invece che parzialmente?

Ad esempio: la ricerca di "geom" fa non corrisponde a "geomAL". Ovviamente emacs non a priori sa dove inizia o finisce una variabile, ma potrebbe essere costruita come una funzione per c-mode?

+1

http://www.emacswiki.org/emacs/RegularExpression – devnull

risposta

7

Il normale motore espressione Emacs (C-M-s<regexp>) ha vari operandi per questo genere di cose, come il limite di parola \< e \> asserzioni di lunghezza zero. Quindi \<geom\> corrisponderebbe allo geom da solo e (a seconda della tabella di sintassi della tua modalità), forse anche il prefisso in geom_something. Prova \<geom\>[^_] se è necessario escludere il suffisso underscore.

+0

Scusate, ho modificato questa risposta al posto mio per sbaglio. C'è un modo per cancellare le modifiche? – mvw

+0

@mvw: è stato rifiutato dai revisori. Puoi anche eseguire il rollback di una modifica facendo clic sul link "modificato" e cercando il link di rollback nell'intestazione della modifica precedente prima di quella indesiderata. – tripleee

+0

Personalmente preferisco l'operando '\ b', che trovo un po 'più facile da digitare, < or >. – Malabarba

1

Hai provato il sistema Emacs TAGS? Dovrebbe essere in grado di analizzare i vars out e potrebbe offrire ricerche esatte. Vedi qui: http://www.emacswiki.org/emacs/EmacsTags

generare la tabella tag con l'etags aiutante:

etags *.c 

Cercare un tag con

M-. your-var-name 
3

È possibile utilizzare C-u C-s \_<g\_> che cercare il simbolo g utilizzando una ricerca espressione regolare con i marcatori di simboli-confine. O in un Emac abbastanza recente puoi fare M-s _ g che farà essenzialmente lo stesso (M-s è il "tasto prefisso di ricerca" in cui M-s _ è isearch-forward-symbol).

Problemi correlati