Se sei ancora interessato dai un'occhiata a cexp.el.
È solo un trucco ma forse è utile per il tuo scopo.
È possibile cercare espressioni combinate regolari e bilanciate con cexp-search-forward
. Il re-search-forward
integrato viene utilizzato per le espressioni regolari e quindi si applicano le sue regole di sintassi. Le espressioni bilanciate possono essere abbinate agli elementi di sintassi aggiuntivi \!(
e \!)
.
La restrizione più grave è che le espressioni bilanciate potrebbero non verificarsi nei gruppi. Quindi un costrutto come \!(^{ \(\!(^{.*}$\!)\)+ }$\!)
non funziona a causa del gruppo che contiene l'espressione bilanciata interna.
Tuttavia, un esempio utile è la corrispondenza TeX-definizioni come
\def\mdo#1{{\def\next{\relax}\def\tmp{#1}\ifx\next\tmp\else\def\next{#1\mdo}\expandafter}\next}
con le espressioni combinate come
\\def\\[[:alpha:]]+\(#[0-9]\)*\!(^{.*}$\!)
La ricerca tramite cexp-search-forward con la cexp precedente restituisce i limiti per il seguenti gruppi:
- L'inizio e la fine della partita intera
- I limiti della partita per l'espressione regolare prima dell'espressione bilanciato, cioè
\def\mdo#1
- I limiti del gruppo acquisito nella prima espressione regolare, cioè
#1
- I limiti dell'espressione bilanciato, cioè
{{\def\next{\relax}\def\tmp{#1}\ifx\next\tmp\else\def\next{#1\mdo}\expandafter}\next}
ha! COSÌ è divertente. Mentre cerco ulteriori suggerimenti su questo, digitando "emacs regex balanced" in google, ottengo * questa domanda * come prima hit. heh heh. – Cheeso