![]() |
RegEx-Ausdruck gesucht
Ich habe Texte die folgendes Aussehen haben könnten:
1234567 bzw. 4545454_1234567_Text Jetzt würde ich einen RegEx-Ausdruck benötigen der beide Fälle abdeckt und mir jeweils den Text/Zahl "1234567" liefert. :gruebel: Da ich in RegEx noch nicht alle Feinheiten kenne bin ich etwas überfordert. |
Re: RegEx-Ausdruck gesucht
Zitat:
Ich würd sagen.. garnicht :zwinker: ![]() |
Re: RegEx-Ausdruck gesucht
Kannst Du diesen regulären Ausdruck mal weiter erklären?
Können pauschal alle Zeichen vor und nach dem Unterstrich weggeworfen werden? Befinden sich davor wirklich nur Ziffern und danach nur Buchstaben? Wie ist das zugrundeliegende Alphabet definiert: Nur "normale Buchstaben" oder auch Sonderzeichen? Besteht die Zeichenkette, die Du haben willst tatsächlich stets nur aus Ziffern? Solche Fragen sind für die Generierung des Ausdruckes hilfreich. |
Re: RegEx-Ausdruck gesucht
Zitat:
Wenn ich mit der RegEx (\d*)_(\d*) bekomm ich als zweite Gruppe für das zweite Beispiel den gewünschten Text Zitat:
Es gibt zwei Fälle: Fall 1: Es ist nur eine Zahl (1234567) ohne Text davor oder danach. Fall 2: Es ist erst eine Zahl (4545454), anschließend immer ein Unterscore (_), danach wieder eine Zahl (1234567). Teilweise kann jetzt eine Bindestich (-) mit einer weiteren Zahl kommen (hab ich gerade erst gesehen). Anschließend ein Unterscore (_) und ein beliebiger Text. Benötigt wird Fall 1: Die komplette Zahl Fall 2: Die Zahl nach dem ersten Unterscore und der teilweise vorhandene Bindestrich mit der 2ten Zahl. |
Re: RegEx-Ausdruck gesucht
Hi,
also ich habe das ausprobiert und es ging, probiere es mal aus :) Edit: Die einzelnen Teile müsstest Du dann mit den einzelnen CaptureGroups herausbekommen
Code:
mfG
(\d+)(\_(\d+)(\-(\d+)|)|)
mirage228 |
Re: RegEx-Ausdruck gesucht
Nicht ganz. Jedenfalls nicht mit dem gleichen Index der Capture-Group.
Beim Fall 2 muß ich den Index 3 bemühen und beim Fall 1 ist es der Index 1. Ich verwende übrigens ![]() Aber beim ![]() Evtl. muß ich ja in meinem Programm einen "primären" Index definieren und falls da nichts raus kommt soll der alternative Index geprüft werden. Müßte zwar das Programm zwar etwas erweitern, aber falls es mit Rexex nicht über den gleichen Index geht. |
Re: RegEx-Ausdruck gesucht
Hi,
Da musst Du eine Fallunterscheidung machen, das stimmt. Wenn Index 3 bei den Gruppen nicht gesetzt ist (bzw. = '' ist), musst Du dann einfach von Fall I ausgehen. Eine andere Möglichkeit sehe ich da jetzt auch nicht... mfG mirage228 |
Re: RegEx-Ausdruck gesucht
Vielleicht so:
Code:
Dann ist's immer in der 2. Gruppe.
^(\d+_)?(\d+)[^0-9]*$
|
Re: RegEx-Ausdruck gesucht
Zitat:
Jetzt bräuchte ich noch die Erweiterung das folgender Fall auch geht 4545454_1234567-1_Text und als Ergebnis 1234567-1 gefunden wird. Sprich nach der Zahl mittels Bindestrich auch noch eine "Extension-Zahl" gefunden wird. |
Re: RegEx-Ausdruck gesucht
So?
Code:
^(\d+_)?(\d+(-\d+)?)[^0-9]*$
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz