vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Regex Frage 
Autor: Theo_kkv
Datum: 20.10.15 12:27

Hallo,
ich hoffe, dass ich im Ein- und Umsteigerbereich richtig bin. Meine Frage bezieht sich auf eine Problematik, die -wie ich denke- sich mit Regex am besten lösen lässt.
Es soll eine beliebig lange Zahl (meist 5,6 oder 7stellig) darauf hin geprüft werden, ab in ihr aufeinanderfolgend 3mal die gleiche Ziffer kommt.
Beispiel: 74[u]22206 wäre so ein Fall.

Kann dazu jemand einen Einstieg geben.

Danke
Tom
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: Manfred X
Datum: 20.10.15 13:35

Hallo!

Darf's auch ohne RegEx sein?

Hier der Ausstieg ...
Private Function SuccessivelyThreeIdenticalDigits _
    (ByVal str As String) As Boolean
 
    If str Is Nothing OrElse str.Length < 3 Then Return False
 
    For i As Integer = 0 To str.Length - 3
        If Char.IsDigit(str(i)) Then
           If str(i) = str(i + 1) AndAlso _
              str(i + 1) = str(i + 2) Then Return True
        End If
    Next i
 
    Return False
End Function


Beitrag wurde zuletzt am 20.10.15 um 13:51:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: HenryV
Datum: 21.10.15 11:44

Hallo Tom

Dasselbe mit RegEx

Private Function SuccessivelyThreeIdenticalDigits _
    (ByVal str As String) As Boolean
    Dim re As Regex = New Regex("(\d)\1\1")
    Dim mc As MatchCollection = re.Matches(str)
    If mc Is Nothing Then
        Return False
    Else
        Return True
    End If
End Function
Gruss HenryV
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: Manfred X
Datum: 21.10.15 12:12

Hallo!

Nicht so ganz dasselbe!
Es muß auch bei dieser Variante z.B. eine Mindest-Längen-Überprüfung
des als Parameter übergebenen String vorgenommen werden.
Und digits im String werden vorausgesetzt !!

Grob getestet ....
 Private Function SuccessivelyThreeIdenticalDigits2 _
    (ByVal str As String) As Boolean
 
    If str Is Nothing OrElse str.Length < 3 Then Return False
 
    Dim re As System.Text.RegularExpressions.Regex = _
       New System.Text.RegularExpressions.Regex("(\d)\1\1")
 
    Dim mc As System.Text.RegularExpressions.MatchCollection = _
       re.Matches(str)
 
    If mc Is Nothing OrElse mc.Count = 0 Then
       Return False
    Else
       Return True
    End If
End Function


Beitrag wurde zuletzt am 21.10.15 um 12:22:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: GPM
Datum: 21.10.15 14:42

Nein. Bei der Regex-Version wird doch nur auf Übereinstimmung geprüft
und bei einer Länge < 3 gibt es halt keine. Somit reicht doch:

 Return New Regex("(\d)\1\1").IsMatch(str)
MfG GPM
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: Theo_kkv
Datum: 21.10.15 14:54

Hallo
und Danke an alle, die sich bemüht haben! Ich werde mich in der nächsten zeit wohl viel stärker mit reg. Ausdrücken beschäftigen, da für mich hier ein enormes Potential liegt.

Grüße Tom
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Regex Frage 
Autor: Manfred X
Datum: 21.10.15 15:47

Wenn Du Dich auf mein Beispiel beziehst, hast Du recht.

Ich habe mich aber über den Code von HenryV bezogen.
Dort fehlte die Abfrage auf mc.Count = 0.
Und in dem Fall funktioniert es nicht.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel