Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regulärer ausdruck gesucht (https://www.delphipraxis.net/201244-regulaerer-ausdruck-gesucht.html)

v2afrank 4. Jul 2019 14:28


Regulärer ausdruck gesucht
 
Manchmal tue ich mich mit regulären Ausdrücken schwer.
Ich suche in einem String nach _( es sei denn er enthält __(
In diesem Text :

_(Ich soll gefunden werden)
__(Ich soll nicht gefunden werden)

soll also die zweite Zeile nicht gefunden werden. Kann mir einer mit dem regulären Ausdruck auf die Sprünge helfen ? Das nicht bekomme ich über ^((?!__).)*$ hin und das suchen nach _( über _\( aber wie kombiniere ich die beiden ?

Klaus01 4. Jul 2019 14:33

AW: Regulärer ausdruck gesucht
 
.. wenn Du zwei Suchen nacheinander startest.
Zuerst suchst Du nach "__" ist das nicht enthalten suchst Du nach "_".

Grüße
Klaus

peterbelow 4. Jul 2019 14:56

AW: Regulärer ausdruck gesucht
 
Zitat:

Zitat von v2afrank (Beitrag 1435982)
Manchmal tue ich mich mit regulären Ausdrücken schwer.
Ich suche in einem String nach _( es sei denn er enthält __(
In diesem Text :

_(Ich soll gefunden werden)
__(Ich soll nicht gefunden werden)

soll also die zweite Zeile nicht gefunden werden. Kann mir einer mit dem regulären Ausdruck auf die Sprünge helfen ? Das nicht bekomme ich über ^((?!__).)*$ hin und das suchen nach _( über _\( aber wie kombiniere ich die beiden ?

Die Spezifikation ist mal wieder grob unvollständig :wink:.

Ist wirklich so wie in deinen beiden Beispielen dass die Zeilen immer mit einem Unterstrich beginnen, oder kann der zu findende Text auch mitten in einer Zeile stehen?

Im ersten Fall gibt
Code:
^_\(([^\)]+)
einen Match auf die erste Zeile, aber nicht auf die zweite, und die capture group 1 enthält "Ich soll gefunden werden".

Falls der Text irgendwo innerhalb einer Zeile auftauchen kann wird es komplexer.Das hier scheint zu funktionieren:

Code:
^_\(([^\)]+)|[^_]_\(([^\)]+)
Leider taucht der gefundene Text dann nicht immer in der gleichen capture group auf; wenn die zweite Bedingung den Match liefert ist die erste group leer und die zweite enthält den Text.

v2afrank 5. Jul 2019 05:51

AW: Regulärer ausdruck gesucht
 
[QUOTE=peterbelow;1435989]
Zitat:

Zitat von v2afrank (Beitrag 1435982)
Die Spezifikation ist mal wieder grob unvollständig :wink:.

Ich Gestehte ich bin mal wieder schlampig gewesen :oops:
Dein zweiter Fall war der den ich gesucht habe und er funktioniert perfekt. Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz