Announcement

Collapse
No announcement yet.

Erstellung einer RegularExpression

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Erstellung einer RegularExpression

    Hallo Leute,

    ich brauche Hilfe bei eine RegularExpression.

    Ich habe mir eine VB.Net Forms Anwendungs geschrieben und ich möchte das bei jedem Eintrag des Users in die Textbox der Eingetragene Text überprüft wird und eventuelle Fehleingaben Automatisch oder Nachträglich geändert werden...

    Ich arbeite mit einem Match Pattern String...
    Soweit sogut. Das Problem ist das ich es nicht hingekomme das er die Richtigen Zeichen löscht.

    Folgende Zeichen sollen erlaubt sein: Alle Zeichen (a-b A-B 0-9) | Alle Sonderzeichen ausser (')

    Hier mein Codebeispiel:

    Zu sehen ist das ich das ' mit einem Doppeltem '' (Einzellne Hochkomma kein Anführungszeichen) ersetze (oder ersetzen will).

    Wichtig ist auch, dass er mir nachdem er es ersetzt hat beim nächsten durchlauf nicht auf beide Hochkomma losgeht und diese ändert.
    Es soll also nur ein Einzellnes Hockomma geändert werden.

    Code:
     Public Sub StringPattern(ByVal sender As System.Object)
            Dim TxtBx As TextBox = CType(sender, TextBox)
    
            Dim MatchPattern As String = "^[']{1}$" 'definiert das Suchkriterium
            If TxtBx.TextLength > 0 Then
                Dim Match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(TxtBx.Text, MatchPattern)
                If Match.Success Then
                    Dim i As Integer = TxtBx.Text.IndexOf(Match.Value)
                    If Match.Value = "'" Then
                        'ersetzt ' mit ''
                        TxtBx.Text = TxtBx.Text.Replace(Match.Value, "''")
                        'selektiert die gerade gelöschte Stelle
                        sender.Select(i + 1, 0)
                        'und bewegt den Caret dahin um mit der Eingabe an der Stelle fortzufahren
                        sender.ScrollToCaret()
                        Exit Sub
                    End If
                    MsgBox("Sie haben ein unerlaubtes Zeichen eingegeben: " & """" & Match.Value & """")
                    'findet das Zeichen im Text
    
                    'entfernt das Zeichen
    
                    TxtBx.Text = TxtBx.Text.Remove(i, Match.Length)
    
                    'selektiert die gerade gelöschte Stelle
                    sender.Select(i, 0)
                    'und bewegt den Caret dahin um mit der Eingabe an der Stelle fortzufahren
                    sender.ScrollToCaret()
                End If
            End If
        End Sub
    Falls sich jemand damit auskennt und mir helfen könnte?

    Grüße
    TBS

    @Bitte in VB.Net verschieben denke da gehört es wohl eher rein, sorry
    Zuletzt editiert von TimTimBS; 10.11.2011, 11:15.

  • #2
    ^[']{1}$

    DeinAusdruck besagt:
    Am Zeilenanfang
    Soll aus der Auswahl der Zeichen '
    dieses Zeichen einmal vorkommen
    und dann das Zeilenende


    (^|[^'])(')([^']|$)

    könnte helfen. Das gesuchte ' ist in group 2
    Zuletzt editiert von Christian Marquardt; 10.11.2011, 11:32.
    Christian

    Comment


    • #3
      Ja klar diese Regex ist nur eins von vielen Beispielen das ich Probiert habe.

      Das es nur das Erste Zeichen ändert ist mir aufgefallen... deshalb bin ich ja verwirrt... Kannst du mir nicht helfen?

      Im gesammten Text sollen alle ' mit '' ersetzt werden übermehrere Zeilen...

      und das mit einer RegEx

      Originally posted by Christian Marquardt View Post
      ^[']{1}$

      DeinAusdruck besagt:
      Am Zeilenanfang
      Soll aus der Auswahl der Zeichen '
      dieses Zeichen einmal vorkommen
      und dann das Zeilenende

      Comment


      • #4
        (^|[^'])(')([^']|$)

        könnte helfen. Das gesuchte ' ist in group 2

        Warum du das nicht mir einem Ersetzen im String von ' nach '' mit replace machst?
        Christian

        Comment


        • #5
          Ah sorry hatte es überlesen...

          Das mit dem Replace wird dann ja gemacht...

          Natürlich könnte ich auch einfach einen Replace über den gesammten Text machen.

          Ich will/muss mich aber mit den Regex beschäftigen und möchte den Code nur ausführen wenn auch was gefunden wird..

          Danke ich teste es gleich mal.

          Comment


          • #6
            http://www.regexplanet.com/simple/

            Ah sorry hatte es überlesen...
            Nein, hatte ich noch eingefügt...

            Ich will/muss mich aber mit den Regex beschäftigen
            Schön, aber wenn es mit anderen Mitteln einfacher geht....
            Christian

            Comment


            • #7
              Besser:
              http://gskinner.com/RegExr/

              Comment


              • #8
                Muss natürlich jeder wissen auf was er Wert legt, aber
                http://gskinner.com/RegExr/
                sieht zwar schicker aus, kann aber nur einen Input verarbeiten. Es ist ungemein praktisch, einen Ausdruck gleich mit verschiedenen Eingaben zu prüfen. Eine Ausgabe des maskierten Ausdrucks zum Copy und Paste ist auch nicht vorhanden
                Christian

                Comment


                • #9
                  Natürlich kommt noch hinzu, für Leute die richtig Paranoid sind und niergends Javascript erlauben.

                  Mehrere Sachen kann man selbstverständlich auch mit Multiline bearbeiten (selbstverständlich auf Global schalten zusätzlich).

                  Jedenfalls meinermeinung nach der Beste für diese Sache.
                  (Wenn du was besseres suchst, dann brauchst du ein Programm dafür)

                  Comment


                  • #10
                    Mehrere Sachen kann man selbstverständlich auch mit Multiline bearbeiten (selbstverständlich auf Global schalten zusätzlich).
                    Definitiv falsch was Anfang und Ende eines Ausdruckes betrifft. Das lässt sich dann nicht mit mehreren Zeilen erledigen

                    (Wenn du was besseres suchst, dann brauchst du ein Programm dafür)
                    Je nach den persönlichen Anforderungen weniger ein Programm, als eine Internetseite die genau das bietet was man benötigt.

                    Natürlich kommt noch hinzu, für Leute die richtig Paranoid sind und niergends Javascript erlauben.
                    Warfum ist jemand der Javascript abgeschaltet hat paranoid? Nun, ich gehöre zwar nicht dazu, aber wenn du zu dem Personenkreis gehörst, der auf alles klickt, was bei 3 nicht auf den Bäumen ist, wirst du über kurz oder lang ein Sicherheitsproblem bekommen...Man sollte sich schon über die Sicherheit des Rechners Gedanken manchen. Der eine mehr, der andere weniger
                    Christian

                    Comment

                    Working...
                    X