[gelöst] regexp gesucht die String ausschließt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mullers

[gelöst] regexp gesucht die String ausschließt

Beitrag von mullers » 17.12.2008 21:32:22

Hi,

der Titel dieses Threads ist wahrscheinlich nicht so aussagekräftig...
Ich suche einen regulären Ausdruck (für Emacs oder Perl) der folgendes macht:
Ich habe eine .tex Datei und will bestimmte Befehle ersetzen. In Emacs könnte ich das mit `M-x replace-regexp' machen.

Über die Datei sind also Anweisungen für Kursivdruck verteilt:

Code: Alles auswählen

\textit{bla} oder \textit{blabla} usw.
Ich möchte alle diese Anweisungen löschen.
Wie sähe eine regexp aus die \textit{} trifft, egal was *in* den geschweiften Klammern steht?

Gruesse
henry
Zuletzt geändert von mullers am 19.12.2008 11:45:13, insgesamt 1-mal geändert.

Benutzeravatar
cbra
Beiträge: 13
Registriert: 17.12.2008 19:55:50

Re: regexp gesucht die String ausschließt

Beitrag von cbra » 17.12.2008 21:37:28

Hallo myyers,
wie wäre es mit

Code: Alles auswählen

s/\\textit\{(.*?)\}/$1/mg
Gruß cbra
Alle Beiträge ohne Gewähr, Rechtschreibung inbegriffen.

mullers

Re: regexp gesucht die String ausschließt

Beitrag von mullers » 18.12.2008 11:47:08

Also für Emacs habe ich jetzt das Passende (mit freundlicher Hilfe auf gnu.emacs.help):

Code: Alles auswählen

\\textit{\([^}]*\)} -> \1 
cbra hat geschrieben:

Code: Alles auswählen

s/\\textit\{(.*?)\}/$1/mg
Mmh, funktioniert bei mir nicht. Kann es sein, dass das überhaupt so angelegt ist, dass der Text in den geschweiften Klammern mitgelöscht wird?

Gruesse
henry

omgwtfbbq
Beiträge: 51
Registriert: 17.12.2008 20:57:36

Re: regexp gesucht die String ausschließt

Beitrag von omgwtfbbq » 18.12.2008 12:20:07

Code: Alles auswählen

sed 's/\\textit\{(.*)\}//g' DATEI > DATEI.neu
müsste gehen

mullers

Re: regexp gesucht die String ausschließt

Beitrag von mullers » 18.12.2008 15:11:36

Eine weitere Möglichkeit ist `detex', enthalten in texlive-extra-utils.
In Emacs Region markieren, dann

Code: Alles auswählen

C-u M-x shell-command-on-region RET detex
omgwtfbbq hat geschrieben:

Code: Alles auswählen

sed 's/\\textit\{(.*)\}//g' DATEI > DATEI.neu
müsste gehen
Da funktioniert übrigens auch nicht:

Code: Alles auswählen

do! sed 's/\\textit\{(.*)\}//g' test.nry
sed: -e Ausdruck #1, Zeichen 21: Ungültiger Inhalt von »\{\}«
do! sed s/\\textit\{(.*)\}//g test.nry 
zsh: no matches found: s/\textit{(.*)}//g

Antworten