Forum: PC-Programmierung regex (pcre) Problem


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 Harald M. (transporter08)


Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr Lieben,

ich hänge an einem Problem mit einem regex-Ausdruck.
ich habe folgendes Binaermuster:
1
1-#1111#11

mein regex (pcre) sieht so aus:
1
[1-5]{3}/gm

der Match sieht nur das
1
1-#1111#11
2
   ^^^
wie kann man erreichen, dass er ZUSÄTZLICH auch die
1
1-#1111#11
2
    ^^^
sieht ?

Für Anregungen wäre ich Euch sehr dankbar.

von DPA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch ein Komma dazu vielleicht?
1
[1-5]{3,}

Was soll an dem Binär sein? Und wieso zahlen von 1 bis 5?

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
DPA schrieb:
> Noch ein Komma dazu vielleicht?

Soweit ich das verstehe, will er nicht einen Match, in dem alle 4 
Zeichen stehen, sondern zwei Matches, einmal mit dem ersten bis dritten 
Zeichen und einmal mit dem zweiten bis vierten Zeichen (aus der Reihe 
der Einsen).

: Bearbeitet durch User
von foobar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1
[1-5](?=[1-5]{2})

Matched eine Ziffer der zwei weitere folgen.

von Ralf D. (doeblitz)


Bewertung
0 lesenswert
nicht lesenswert
Welche Sprache bzw. welche Bindings benutzt du denn?

Normalerweise bekommt man ja immer nur einen Match, wiederholtes Matchen 
setzt üblicherweise nach dem letzten Match auf -> überlöappende Matches 
werden nicht gefunden.

Du müsstest daher für weitere (überlappende) Matches unmittelbar hinter 
Start des letzten Matches aufsetzen. Wie man das macht hängt aber von 
der benutzten Sprache bzw. Binding ab.

von Harald M. (transporter08)


Bewertung
0 lesenswert
nicht lesenswert
Erstmal vielen Dank für alle Eure Anteilnahme und Anregungen.

Ralf D. schrieb:
> Welche Sprache bzw. welche Bindings benutzt du denn?
>
> Normalerweise bekommt man ja immer nur einen Match, wiederholtes Matchen
> setzt üblicherweise nach dem letzten Match auf -> überlöappende Matches
> werden nicht gefunden.
>
> Du müsstest daher für weitere (überlappende) Matches unmittelbar hinter
> Start des letzten Matches aufsetzen. Wie man das macht hängt aber von
> der benutzten Sprache bzw. Binding ab.

Überlappend ist ein sehr gutes Stichwort :)

Genau das brauche ich hier, aber mir ist das in der Form auf der Zunge 
liegen geblieben.

Wie kann ich das hier (pcre = Perl Compatible Regular Expressions) 
umsetzen ?

von Ralf D. (doeblitz)


Bewertung
0 lesenswert
nicht lesenswert
Harald M. schrieb:
[...]
> Überlappend ist ein sehr gutes Stichwort :)
>
> Genau das brauche ich hier, aber mir ist das in der Form auf der Zunge
> liegen geblieben.
>
> Wie kann ich das hier (pcre = Perl Compatible Regular Expressions)
> umsetzen ?

Du musst mehrfach matchen und dabei jeweils den Anfang des Strings 
verschieben: erster Matchvorgang liefert Beginn des erfolgreichen 
Matches bei Position x, du machst den nächsten Matchvorgang beginnend 
bei Position x+1.

Wie du das konkret machen kannst hängt halt von der benutzten Sprache 
bzw. den Bindings ab ...

von Frank L. (Firma: Flk Consulting UG) (flk)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

versuch es mal damit.

(?=(1{3}))

Der Ausdruck findet alle Gruppe zu je 3 "111".

Du kannst es unter https://regex101.com/ testen

Gruß
Frank

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.