michi1983
Goto Top

Regex Pattern

Hallo Admins,

ich bräuchte bitte mal Hilfe mit Regex (Regex und ich werden wohl keine Freunde mehr).

Ich habe z.B. folgenden String:
cast (mara.attyp as prodcategory preserving type ) as ProductCategory

Was ich erreichen möchte ist, dass folgender Teil durch Regex erkannt wird:

mara.attyp as ProductCategory
oder im besten Fall (falls das geht),
mara.attyp ProductCategory

Was ich bisher versucht habe und auch für den ersten Teil klappt:

[a-zA-Z]{4}\.[a-zA-Z]{5}
link

Ich habe aber keine Ahnung wie ich es schaffen würde z.B. nach dem "as" zu suchen, vor allem weil dieser Teil ja 2 x vorkommt in meinem Beispiel und mich aber nur der hintere Teil interessiert, der dann case senstive ist. Den ersten Alias in lowercase würde ich gerne immer ignorieren.

Danke für eure Hilfe.

Gruß
Michi

Content-ID: 8045228735

Url: https://administrator.de/contentid/8045228735

Ausgedruckt am: 19.11.2024 um 03:11 Uhr

Kraemer
Kraemer 04.08.2023 um 08:14:43 Uhr
Goto Top
(mara\.attyp)(?:.*)(ProductCategory)$
TK1987
Lösung TK1987 04.08.2023 um 08:17:50 Uhr
Goto Top
Moin,

Zitat von @michi1983:
Ich habe aber keine Ahnung wie ich es schaffen würde z.B. nach dem "as" zu suchen, vor allem weil dieser Teil ja 2 x vorkommt in meinem Beispiel und mich aber nur der hintere Teil interessiert, der dann case senstive ist. Den ersten Alias in lowercase würde ich gerne immer ignorieren.
Den ersten Teil schon mal gruppieren, dann alles bis zum "as " suchen und den Teil dahinter wieder gruppieren. Da die quantifier ohne zusätzliches Fragezeichen erst mal hungrig sind, wird das erste "as" einfach verschlungen:
([a-zA-Z]{4}\.[a-zA-Z]{5}).*as ([a-zA-Z]+)
https://regex101.com/r/IVz2oJ/1

Gruß Thomas
7907292512
Lösung 7907292512 04.08.2023 aktualisiert um 12:52:53 Uhr
Goto Top
Zitat von @michi1983:
oder im besten Fall (falls das geht),
mara.attyp ProductCategory

Powershell sample
$string = 'cast (mara.attyp as prodcategory preserving type ) as ProductCategory'  
$result = $string -replace '(?i).*([a-z]{4}\.[a-z]{5}).*as\s+([a-z]+).*','$1 $2'  
$result
https://regex101.com/r/s6gr7t/2

Gruß siddius
michi1983
michi1983 04.08.2023 um 14:14:26 Uhr
Goto Top
Quote from @Kraemer:

(mara\.attyp)(?:.*)(ProductCategory)$

Hier war meine Angabe wohl zu ungenau, sorry dafür.
mara.attyp
ist auch nicht immer gesetzt.
Danke trotzdem!
michi1983
michi1983 04.08.2023 um 14:14:48 Uhr
Goto Top
Danke Leute, das hat geholfens Schönes Wochenende!
Gruß