Hallo, ich habe das folgendes Regex-Problem. ich versuche ein Regex zu erstellen der beispielsweise 12444 und 88009 aus folgenden Texten erkennt: Textbeispiel1: =Z70+12444.099-K1255 Textbeipsiel2: ==U44=88009-P9183 Mein Regex bis jetzt: =?=([^\\s,]+)\\+(?<ModuleNr>[^\\s,]+)\\.([^\\s,]+) Dieser Regex kann aber nur 11307 aus Beispieltext1 erkennen. Wie kann ich das zweite Sonderzeichen im Beispieltext2 optional machen und das dritte Sonderzeichen ist entweder = oder +. Also Regex was ich suche soll sowohl 12444 aus BeispielText1 als auch 88009 aus Beispieltext2 erkennen. Gruß
1 | echo \ |
2 | "Textbeispiel1: =Z70+12444.099-K1255\n" \ |
3 | "Textbeipsiel2: ==U44=88009-P9183" \ |
4 | | perl -nle 'print $1 if /\b(\d+)\b/' |
W. schrieb: > | perl -nle 'print $1 if /\b(\d+)\b/' Nope, das matcht auch auf die ".099-" in Textbeispiel1. Der Quantifizierer muss sein, sonst wird's nicht eindeutig.
Flo schrieb: > Textbeispiel1: =Z70+12444.099-K1255 > Textbeipsiel2: ==U44=88009-P9183 Leider sagst du nicht den Dialekt deiner Regex dazu, anyway hier in Perl:
1 | $ cat r |
2 | =Z70+12444.099-K1255 |
3 | ==U44=88009-P9183 |
4 | |
5 | $ cat r.pl |
6 | #!/usr/pin/perl |
7 | if (m/^\W+ # at begin, non-word(s) |
8 | \w+ # some words |
9 | \W+ # non-words |
10 | (\d+) #digits |
11 | /x) { print "$1\n"; } |
12 | $ cat r | perl -n r.pl |
13 | 12444 |
14 | 88009 |
15 | $ |
Die Erweiterun /x ist sehr zu emofehlen, um das zu dokumentieren. leo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.