myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » [gelöst] RegEx: eine Art 'exakte' Suche
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[gelöst] RegEx: eine Art 'exakte' Suche

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Trekki1990 Trekki1990 ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-2705.jpg


Dabei seit: 05.02.2008
Beiträge: 498
Entwicklungsumgebung: VS 2013
Herkunft: Sachsen-Anhalt, Dessau


Trekki1990 ist offline

[gelöst] RegEx: eine Art 'exakte' Suche

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo liebe Gemeinde,

es ist gar nicht so leicht einen Titel für einen RegEx Thread zu finden ;)
Habe folgende Konstellation an Daten (AD-Gruppen):


DBG_Q-A - Abteilung ABCDEFGH
DBG_Q-A-F - Abteilung ABCDEFGH
DBG_Q-A-F1 - Abteilung ABCDEFGH
DBG_Q-A-M - Abteilung ABCDEFGH
U_Q-A
U_Q-A-F
U_Q-A-F1


Suchstring ist: Q-A-F
Pattern ist: (Q-A-F)\W|(Q-A-F)$
Herauskommen die Gruppen:


DBG_Q-A-F - Abteilung ABCDEFGH
U_Q-A-F


Soweit so gut. Suche ich jetzt aber nach "Q-A" um diese Gruppen zu bekommen:


DBG_Q-A - Abteilung ABCDEFGH
U_Q-A


Zeigt er mir ALLE die "Q-A" im Namen haben und nicht nur die zwei die ich eigentlich will.
Habe mit dem RegEx Tester von  https://regex101.com/ schon ewig rumprobiert, aber komme zu keiner Lösung. Ist meine Anforderung überhaupt umzusetzen? Geht's vielleicht auch ohne RegEx?

Wäre für Denkanstöße dankbar.

PS: Ich prüfe immer nur einen Gruppennamen mit dem Pattern. Ich habe eine Liste aus Strings mit den ganzen AD-Gruppennamen. Iteriere die mit foreach durch und prüfe mit dem String ob die meinen Kriterien entspricht. Ist also nicht Multiline.

VG
trekki

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Trekki1990 am 17.11.2017 13:16.

16.11.2017 23:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dannoe
myCSharp.de-Mitglied

Dabei seit: 24.11.2015
Beiträge: 52
Entwicklungsumgebung: VS2005-VS2017


dannoe ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Würde dir ein

Code:
1:
Q-A[^-]

weiterhelfen?

bzw.

Code:
1:
2:
Q-A-F[^-]
Q[^-]
16.11.2017 23:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007
myCSharp.de-Mitglied

Dabei seit: 03.02.2012
Beiträge: 992
Entwicklungsumgebung: Visual Studio 2010 Express


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sag doch einfach, dass nach dem Such-String " - " kommen soll.

(Q-A) - \w+|(Q-A)$
16.11.2017 23:33 Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.363
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo dannoe, hallo Trekki1990,

Q-A[^-] verlangt, dass auf A auf jeden Fall noch ein Zeichen folgt (das kein Bindestrich ist). Das ist beim zweiten gewünschten Match nicht der Fall.

Gewünscht ist, dass hinter dem A kein Bindestrich steht (egal, ob überhaupt noch etwas danach steht oder eben nicht).

Und das geht mit Q-A(?!-) also einem negativen Lookahead auf einen Bindestrich.

Oder man gibt, wie Palladin007 vorschlägt, einfach (positiv) an was folgen soll.

herbivore

PS: Ich weiß nicht, ob man mit regex101.com on-the-fly testen kann; mit  On-the-fly Regex-Tester: Regex-Lab geht das. Das vereinfacht das Testen deutlich.

PPS: Auch bei Regex gilt  DRY. Also z.B. statt
    (Q-A) - \w+|(Q-A)$
besser
    Q-A( - \w+|$)
    ggf. kombiniert mit RegexOptions.ExplicitCapture
oder
    Q-A(?: - \w+|$)
16.11.2017 23:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Trekki1990 Trekki1990 ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-2705.jpg


Dabei seit: 05.02.2008
Beiträge: 498
Entwicklungsumgebung: VS 2013
Herkunft: Sachsen-Anhalt, Dessau

Themenstarter Thema begonnen von Trekki1990

Trekki1990 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für eure guten Tipps!
Konnte es jetzt zu meiner Zufriedenheit lösen.
Das Pattern sieht folgendermaßen aus:

(STRING) - |((U_|U_TEW-)STRING)$

VG
trekki
17.11.2017 13:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2017 myCSharp.de-Team. Alle Rechte vorbehalten. 11.12.2017 20:14