![]() |
regulärer Ausdruck
Hallo,
ich brauche einen regulären Ausdruck der nach dem Wort 'baum' sucht. Dabei darf das Wort 'baum' am Anfang des Textes oder mittendrin stehen. Wenn es mittendrin steht muss unbedingt ein Steuer- oder Leerzeichen vorher kommen. Nach dem Wort muss ebenfalls mindestens ein Steuer- oder Leerzeichen kommen. Mein erster Versuch sieht so aus regulärer Ausdruck: ^|\s+baum\s+ 'Ein baum steht im Wald' - OK 'baum auf der Straße' - OK ' baum auf der Straße' - OK 'Einbaum steht im Wald' - String wird gefunden -> nicht OK Im letzten Fall dürfte der String nicht gefunden werden, da weder ein Steuer- bzw. Leerzeichen vor 'baum' steht, noch der Ausdruck am Anfang des Textes steht. Hat jemand vielleicht eine Idee wie man den regulären Ausdruck umformulieren muss? Danke! |
AW: regulärer Ausdruck
Ersetzte es mal mit der entsprecehnden Wertemenge:
^|[ ]+baum[ ]\s+ |
AW: regulärer Ausdruck
Also in die eckigen Klammern sollen alle Zeichen der Zeichengruppe s hinein? Hab ich das richtig verstanden? Wo bekomme ich denn die Zeichen alle her?
|
AW: regulärer Ausdruck
Wie sieht es dann mit dem Wort "Baumaßnahme" aus? Darf das gefunden werden? Oder muss Baum ein abgeschlossenes Wort sein?
|
AW: regulärer Ausdruck
Zitat:
|
AW: regulärer Ausdruck
Ok als erlaubt wäre vor dem Wort das Leerzeichen, Tabulator und Enter.
Zweiter Versuch: ^|[ \t]+baum[ \t]\s+ Wie bekomme ich das Enter in die Klammer? #13 ist wahrscheinlich nicht richtig und warum muss nach dem Wort nochmals die eckige Klammer stehen? Alle erlaubten Zeichen werden doch schon durch die Zeichengruppe s definiert? |
AW: regulärer Ausdruck
Ich bin mir bei Operator-Prioritäten in RegExen nicht sicher, aber hilft vllt das hier?
Code:
Wie gesagt, ich bin nicht sicher, aber wenn mich meine Erinnerung nicht betrügt, dürfte die implizite Klammerung so aussehen:
(^|\s+)baum\s+
Code:
PS: Was ist wenn Baum am Ende steht?
^|(\s+baum\s+)
|
AW: regulärer Ausdruck
Das geht doch viel einfacher!
Für Wortgrenzen gibt's eine eigene Zeichenklasse, gewöhnlich "\b". ![]() Also:
Code:
Schlägt an bei "Baum fällt", "Der Baum ist groß", "Ich sehe den Baum", aber nicht bei "Baumaßnahmen".
\bBaum\b
|
AW: regulärer Ausdruck
Probier es mal mit \bbaum\b
![]() ^|\s+baum\s+ funktioniert nicht, weil es geparst wird als (^)|(\s+baum\s+). Somit trifft der Ausdruck auf jeden String zu. |
AW: regulärer Ausdruck
Na super, \bbaum\b reicht völlig aus. Die Zeichenklasse kannte ich noch nicht.
Vielen Dank für Eure Mühen. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz