Reguläre Ausdrücke

Hallo,

in einem Writer-Dokument ist eine lange Wortliste für ein Wörterbuch enthalten mit folgender Struktur:
blablabla/abc gefolgt von einem Absatzumbruch.

Ich will nun z.B. alle Wörter, die den Buchstaben v enthalten, suchen und markieren lassen, um sie anschließend mit dem Kopierbefehl in eine neue Datei einfügen zu können. Dazu gebe ich im "Suchfeld" (reguläre Ausdrücke) folgendes ein:
(.*)v(.*)
Damit finde ich zwar alle gewünschten Wörter (so sieht es jedenfalls aus), kann die markierten Wörter kopieren und in ein neues Dokument einfügen - aber es fehlt der zugehörige Absatzumbruch.

Wie kann ich den *Absatzumbruch* mit einbeziehen?

Gruß
Karl

Teste bitte: <STRG>t - wird eingegeben mit ^t-

Viel Erfolg!

Bernhard Plagemann
Berufskolleg Opladen
Fachbereich Technik
Stauffenbergstr. 21-23
51379 Leverkusen
plm@bk-opladen.de
http://www.bk-opladen.de
http://www.mechatroniker-leverkusen.de
http://www.bernhard-plagemann.de

Hallo Bernhard,

Ich hatte mal einen Ausdruck zum entfernen überflüssiger Zeilenumbrüche
rausgesucht, da war der Zeilenumbruch glaube ich "$" am Ende. Versuchs mal.

andreas

Hallo Karl

Hallo,

in einem Writer-Dokument ist eine lange Wortliste für ein Wörterbuch
enthalten mit folgender Struktur:
blablabla/abc gefolgt von einem Absatzumbruch.

Ich will nun z.B. alle Wörter, die den Buchstaben v enthalten, suchen
und markieren lassen, um sie anschließend mit dem Kopierbefehl in eine
neue Datei einfügen zu können. Dazu gebe ich im "Suchfeld" (reguläre
Ausdrücke) folgendes ein:
(.*)v(.*)
Damit finde ich zwar alle gewünschten Wörter (so sieht es jedenfalls
aus), kann die markierten Wörter kopieren und in ein neues Dokument
einfügen - aber es fehlt der zugehörige Absatzumbruch.

Wie kann ich den *Absatzumbruch* mit einbeziehen?

Füge erstmal im Quelldokument ein sonst nicht benutztes Zeichen direkt vor dem Absatzumbruch ein, z.B. ein #
Suche nach $ ersetze durch #\n

Jetzt kannst du deine Wörter mit v suchen, kopieren, im anderen Dokument einfügen und dort nochmal suchen nach: # ersetzen durch: \n

Gruß Werner

Magst Du hier auch mal schauen?

http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Writer

http://www.regexe.de/

Gruß Achim

Guten Tag,
ist denn ein Zeilenumbruch ein "regulärer" Ausdruck?

Mit freundlichen Grüßen

Bernhard Plagemann
Berufskolleg Opladen
Fachbereich Technik
Stauffenbergstr. 21-23
51379 Leverkusen
plm@bk-opladen.de
http://www.bk-opladen.de
http://www.mechatroniker-leverkusen.de
http://www.bernhard-plagemann.de

ist denn ein Zeilenumbruch ein "regulärer" Ausdruck?

Jaein. Zeilenende ist kein Regulärer Ausdruck - aber Du kannst bis einschließlich dem Zeilenumbruch ( \n oder \n\r ) suchen lassen.

Das $ Zeichen prüft bis "einschließlich" das Ende eines Strings.
Beispiele für Zeilenende:
  * In der Textverarbeit je nach BS mit \n oder \n\r endet,
  * In der Programmierung endet der String mit \0
Zwar bin ich kein Tiefseeprogrammierer, aber ich vermute einmal das alle String mit \0 enden - zumindestens war das in C so.
Vielleicht kann dazu noch jemand anders eine bessere Stellungnahmen abgeben.

Aber um \0 geht es bei Deiner Anfrage nicht. Bei regexe sollen ja die Vereinfachungen bei der Suche nach dem String im Vordergrund stehen.
Und dann bedeutet das Metazeichen $ einschließlich Zeilenumbruch-Zeichen.

Gruß Achim

[...]
Zwar bin ich kein Tiefseeprogrammierer, aber ich vermute einmal das alle String mit \0 enden - zumindestens war das in C so.

Bis auf ganz wenige Ausnahmen stimmt diese Aussage. Diese Ausnahmen sind z. B. BASIC- und PASCAL-Programme, wobei auch hier schon lange die "Null-terminierten Strings" Einzug gehalten haben. Aus diesem Grund haben viele Programme mit der Verarbeitung von Strings, die das Zeichen #00 enthalten, Probleme. Auch viele Sicherheitslücken resultieren aus Tricks mit diesem Zeichen.

Wäre es nicht besser wenn Du "nach erfolgreicher Suche" jedem Treffer ein \n oder \n\r beim Eintragen einfach hinten mit anhängst?
Nur weis ich nicht ob das in OO / LO geht. Das musst Du ergoogeln / recherchieren und ausprobieren... :frowning:

@Uwe, Danke für die gute Info! "Irgendwas" war bei mir noch so was in Erinnerung...

Wäre es nicht besser wenn Du "nach erfolgreicher Suche" jedem Treffer ein \n oder \n\r beim Eintragen einfach hinten mit anhängst?
Nur weis ich nicht ob das in OO / LO geht. Das musst Du ergoogeln / recherchieren und ausprobieren... :frowning:

@Uwe, Danke für die gute Info! "Irgendwas" war bei mir noch so was in Erinnerung...

Für irgend was muß doch ein Informatikstudium gut sein :smiley:

Hallo Werner und alle anderen Helfer,

Werner Tietz schrieb:

Hallo Karl

Hallo,

in einem Writer-Dokument ist eine lange Wortliste für ein Wörterbuch
enthalten mit folgender Struktur:
blablabla/abc gefolgt von einem Absatzumbruch.

Ich will nun z.B. alle Wörter, die den Buchstaben v enthalten, suchen
und markieren lassen, um sie anschließend mit dem Kopierbefehl in
eine neue Datei einfügen zu können. Dazu gebe ich im "Suchfeld"
(reguläre Ausdrücke) folgendes ein:
(.*)v(.*)
Damit finde ich zwar alle gewünschten Wörter (so sieht es jedenfalls
aus), kann die markierten Wörter kopieren und in ein neues Dokument
einfügen - aber es fehlt der zugehörige Absatzumbruch.

Wie kann ich den *Absatzumbruch* mit einbeziehen?

Füge erstmal im Quelldokument ein sonst nicht benutztes Zeichen direkt
vor dem Absatzumbruch ein, z.B. ein #
Suche nach $ ersetze durch #\n

Jetzt kannst du deine Wörter mit v suchen, kopieren, im anderen
Dokument einfügen und dort nochmal suchen nach: # ersetzen durch: \n

ja, mit diesem Umweg funktioniert es.
Ich habe es heute Morgen auch schon mit (.*)v(.*)$ versucht, nach dem Kopieren waren aber die Absatzumbrüche ebenfalls weg.

Vielen Dank Dir und allen anderen Helfern für die Unterstützung.

Gruß
Karl

Hi *,

Guten Tag,
ist denn ein Zeilenumbruch ein "regulärer" Ausdruck?

Es gibt einen Unterschied zwischen "Positionseinschränkungen" und
"Zeichenplatzhaltern"

Und abgesehen davon, was man als regulären Ausdruck bezeichnet: LO
unterstützt nicht alle möglichen Ausdrücke, wie man sie z.B. von Perl
kennt.
Was dort in einem Rutsch geht, muß man (wie hier beschrieben) auch mal
in zwei seperaten Schritten erledigen.

ciao
Christian