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-Key: 8045228735

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

Printed on: April 27, 2024 at 10:04 o'clock

Member: Kraemer
Kraemer Aug 04, 2023 at 06:14:43 (UTC)
Goto Top
(mara\.attyp)(?:.*)(ProductCategory)$
Member: TK1987
Solution TK1987 Aug 04, 2023 at 06:17:50 (UTC)
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
Mitglied: 7907292512
Solution 7907292512 Aug 04, 2023 updated at 10:52:53 (UTC)
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
Member: michi1983
michi1983 Aug 04, 2023 at 12:14:26 (UTC)
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!
Member: michi1983
michi1983 Aug 04, 2023 at 12:14:48 (UTC)
Goto Top
Danke Leute, das hat geholfens Schönes Wochenende!
Gruß