Forum: PC Hard- und Software regulärer Ausdruck gesucht in np++


von R. F. (rfr)


Lesenswert?

Hallo allerseits,

ich habe einen Text, in dem Kapitelnummerierungen enthalten sind, die 
ich per Regexp suchen will. Der Aufbau der Nummern besteht aus einer 
zahl u d einem Punkt, wenn dieser eine Subnummerierung folgt.

Bei gefundenem Ausdruck soll ein ';<CR/LF>' davorgesetzt werden.

Bisher verhaspelte sich mein Ausdruck öfters. Das würde ich gernne 
ändern, weiss aber keinen passenden Audruck.

Für Hilfe dankbar

Robert

von Regulärer (Gast)


Lesenswert?

Dann zeig doch mal Deinen Ausdruck.

von R. F. (rfr)


Lesenswert?

Folgender:

+[0-9].[0-9].[0-9].[0-9]

Problem:
2.1.2 wird nicht gefunden, 2.1.2.2 hingegen schon.

von Di P. (drpepper) Benutzerseite


Lesenswert?

Habe grade keine Zeit, um deine Hausaufgaben zu machen, aber mit diesem 
Tool kann man sehr schön RegEx-Ausdrücke entwickeln:

http://www.regexr.com/

von Peter II (Gast)


Lesenswert?

R. F. schrieb:
> +[0-9].[0-9].[0-9].[0-9]
>
> Problem:
> 2.1.2 wird nicht gefunden, 2.1.2.2 hingegen schon.

teste mal so

+\d\.\d?.\d?\.\d?

von R. F. (rfr)


Lesenswert?

Peter II schrieb:
> +\d\.\d?.\d?\.\d?

Antwort von np++: Invalid regular expression.

Regexp ist eingeschaltet.

von Regulärer (Gast)


Lesenswert?

R. F. schrieb:
> 2.1.2 wird nicht gefunden, 2.1.2.2 hingegen schon.

Ist klar. Du suchst ja auch nach 4 Ziffern mit irgendeinem Zeichen 
dazwischen.

von Sean G. (atmega318)


Lesenswert?

(\d\.?)+

von Peter II (Gast)


Lesenswert?

R. F. schrieb:
> Antwort von np++: Invalid regular expression.

ich hatte das + mit übernommen, weil du es hingeschrieben hattest. Das 
stört ihn scheinbar

und noch keine kleine Korrektur:

\d\.\d?.?\d?\.?\d?

von Jan L. (ranzcopter)


Lesenswert?

R. F. schrieb:
> [0-9].[0-9].[0-9].[0-9]

[0-9].[0-9].[0-9](.[0-9])?

findet sowohl 1.2.3 als auch 1.2.3.4

Beitrag #4961533 wurde vom Autor gelöscht.
von Di P. (drpepper) Benutzerseite


Lesenswert?

([0-9]\.?)+

findet

1.2.3.4
1.2.3
1.2
1

und 10.11.12.13

siehe: http://www.regexr.com/3flsv

von olibert (Gast)


Lesenswert?

Notepad++ scheint Perl-Regex kompatible zu sein.

Ohne deine Hausaufgaben zu machen, benutze einen Regex-Simulator wie 
diesen..

http://www.perlfect.com/articles/regextutor.shtml

..um den Ausdruck zu entwickeln. Mit dem Regex-Schreiben ist es doch so, 
dass der Einstieg schwierig ist, aber mit der Zeit braucht man nicht 
mehr viel nachdenken, um einen brauchbaren Ausdruck zusammenzustellen.

von c.m. (Gast)


Lesenswert?

Di P. schrieb:
> ([0-9]\.?)+
>
> findet
>
> 1.2.3.4
> 1.2.3
> 1.2
> 1
>
> und 10.11.12.13
>
> siehe: http://www.regexr.com/3flsv

findet aber auch
1.2.3.

((\d+\.?)+\d+)|(\d+)

am besten noch mit ^ und/oder $ verankern.

von R. F. (rfr)


Lesenswert?

Di P. schrieb:
> ([0-9]\.?)+

Wenn ich das eingebe, findet sich die gesuchte Stelle.
Mit was füge ich denn jetzt einen Zeilenumbruch ein, ohne anderes zu 
ändern?
reicht da \n\r   ?

Gruss

Robert
(derzeit die Links lesend)

von R. F. (rfr)


Lesenswert?

Und wie verhindere ich das Finden von Werten wie zB 0x01234  ?

von Di P. (drpepper) Benutzerseite


Lesenswert?

R. F. schrieb:
> Und wie verhindere ich das Finden von Werten wie zB 0x01234  ?

"." findet irgendein Zeichen
"\." findet das Zeichen "."

Problematischer ist, dass so jede einfache Zahl gefunden wird 
(zusätzlich die mit "." als 1000er- oder Dezimal-Trennzeichen).

daher:
c.m. schrieb:
> am besten noch mit ^ und/oder $ verankern.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.