Hallo!
Ich brauche mal ein bisschen Beratung von den RegExp Profis unter Euch. Und zwar habe ich ein Script geschrieben, in dem ich ziemlich viel Strings mittels RegExp Pattern geprüft werden. Dabei geht gerade unter Windows (wenn ich mir die Messung der Ladezeit so angucke) die Performance deftig in den Keller, da der String immer durch den nächsten RegExp geschickt wird, wenn der vorherige nicht matcht. Daher würde ich nun gerne alle unter einen Hut bringen. Frage ist nur hilft das was? Und wenn ja, nehmen wir mal als beispiel die folgenden möglichen Konstrukte:
[objekt=hund]
[foo=bar]
[foo=bar filter=bb]
[foo=bar parser=test]
[foo=bar parser=test filter=bb]
Wie kann ich jetzt in einem RegEx erreichen, dass:
1. Sich Filter und Parser nur dann dazu schalten lassen wenn der erste Teil ein foo und nicht objekt ist?
2. Wenn ich filter oder parser oder beides dazuschalten kann, im letzteren fall aber der parser IMMER vor dem Filter kommen muss?
Dabei möchte ich die Ausgabe des ganzen so einfach wie möglicht halten, damit ich mit dieser ohne weiteres weiterarbeiten kann.
Würde es ggf. irgendeinen Performanceschub bringen, wenn ich die Strings sagen wir mal nach [beliebiger inhalt] durchsuchen würde, dann nach " " und = splitte, und die Werte auf ihre Gültigkeit überprüfe und dann damit weiter arbeite? Oder sind RegEx als solche die performantere Variante (ich gehe jetzt mal von einem Ja aus?)?
Besten Dank schonmal
Ich brauche mal ein bisschen Beratung von den RegExp Profis unter Euch. Und zwar habe ich ein Script geschrieben, in dem ich ziemlich viel Strings mittels RegExp Pattern geprüft werden. Dabei geht gerade unter Windows (wenn ich mir die Messung der Ladezeit so angucke) die Performance deftig in den Keller, da der String immer durch den nächsten RegExp geschickt wird, wenn der vorherige nicht matcht. Daher würde ich nun gerne alle unter einen Hut bringen. Frage ist nur hilft das was? Und wenn ja, nehmen wir mal als beispiel die folgenden möglichen Konstrukte:
[objekt=hund]
[foo=bar]
[foo=bar filter=bb]
[foo=bar parser=test]
[foo=bar parser=test filter=bb]
Wie kann ich jetzt in einem RegEx erreichen, dass:
1. Sich Filter und Parser nur dann dazu schalten lassen wenn der erste Teil ein foo und nicht objekt ist?
2. Wenn ich filter oder parser oder beides dazuschalten kann, im letzteren fall aber der parser IMMER vor dem Filter kommen muss?
Dabei möchte ich die Ausgabe des ganzen so einfach wie möglicht halten, damit ich mit dieser ohne weiteres weiterarbeiten kann.
Würde es ggf. irgendeinen Performanceschub bringen, wenn ich die Strings sagen wir mal nach [beliebiger inhalt] durchsuchen würde, dann nach " " und = splitte, und die Werte auf ihre Gültigkeit überprüfe und dann damit weiter arbeite? Oder sind RegEx als solche die performantere Variante (ich gehe jetzt mal von einem Ja aus?)?
Besten Dank schonmal
Zuletzt bearbeitet: