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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von R. F. (rfr)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Dann zeig doch mal Deinen Ausdruck.

von R. F. (rfr)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> +\d\.\d?.\d?\.\d?

Antwort von np++: Invalid regular expression.

Regexp ist eingeschaltet.

von Regulärer (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
(\d\.?)+

von Peter II (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Di P. (drpepper) Benutzerseite


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.