AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regulärer ausdruck gesucht

Ein Thema von v2afrank · begonnen am 4. Jul 2019 · letzter Beitrag vom 5. Jul 2019
Antwort Antwort
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#1

Regulärer ausdruck gesucht

  Alt 4. Jul 2019, 15:28
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 ?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Regulärer ausdruck gesucht

  Alt 4. Jul 2019, 15:33
.. wenn Du zwei Suchen nacheinander startest.
Zuerst suchst Du nach "__" ist das nicht enthalten suchst Du nach "_".

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#3

AW: Regulärer ausdruck gesucht

  Alt 4. Jul 2019, 15:56
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 .

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.
Peter Below

Geändert von peterbelow ( 4. Jul 2019 um 16:00 Uhr)
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Regulärer ausdruck gesucht

  Alt 5. Jul 2019, 06:51
[QUOTE=peterbelow;1435989]
Die Spezifikation ist mal wieder grob unvollständig .
Ich Gestehte ich bin mal wieder schlampig gewesen
Dein zweiter Fall war der den ich gesucht habe und er funktioniert perfekt. Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 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