Forum: PC-Programmierung vbNet, wo legt man hier die RegEx Optionen fest?


von rambo (Gast)


Lesenswert?

Hi Leute, ich bin blutiger Anfänger was VB und programmieren an sich 
angeht und hab mir hier einen Codeschnipsel aus dem Internet kopiert.

Mit dieser Sub lassen sich alle Zeilen aus einer RichTextBox löschen, 
die einen bestimmten String enthalten.

Ich möchte allerdings nur Zeilen löschen, die mit dem String beginnen.
Ich hab mich schon in die RegEx Optionen sowie die Propertys der 
RichTextBox etc. eingelesen, aber ich weiß nicht, wo ich hier mein 
"StartsWith" einsetzen muss, kann mir jemand auf die Sprünge helfen?
1
Private Sub RemoveLines()
2
        Dim lines As New List(Of String)
3
        lines = RichTextBox1.Lines.ToList
4
        Dim FilterText = firster 'String nach dem die RTB durchsucht werden soll, Wert ist in einer anderen Sub zugewiesen
5
6
        For i As Integer = lines.Count - 1 To 0 Step -1
7
            If Regex.IsMatch(lines(i), FilterText) Then 'HIER soll RegEx nur ein Match finden, wenn FilterText/firster am ANFANG der Zeile steht.
8
                lines.RemoveAt(i)
9
            End If
10
        Next
11
RichTextBox1.Lines = lines.ToArray
12
13
    End Sub

Danke für eure Hilfe

von Jens B. (dasjens)


Lesenswert?

Tja, erstmal Grundlagen lernen, bevor man sich etwas aus dem Netz 
kopiert.
Und hast Du Ahnung von RegEx?
Versuch es doch erstmal Schritt für Schritt, ein Wort im String finden 
etc..

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Da gibt es in VB bestimmt auch Metazeichen dafür, gerade was
Anfang und Ende betrifft.
Bei mir ist das

^  - für am Anfang
$  - für am Ende

Schau mal mal in VB (RegEx) nach, wie dort die Metazeichen sind.

von Axel R. (axlr)


Lesenswert?

Warum nach Regex suchen, wenn du den anfang eines Strings in einer Zeile 
deines Richttext-Dings suchst. ich würde da eher nach "Startswith" 
irgendwas suchen
https://www.dotnetperls.com/startswith-vbnet

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Jens B. schrieb:
> Tja, erstmal Grundlagen lernen, bevor man sich etwas aus dem Netz
> kopiert.

Vorallem fragt man sich immer wieder warum Beschreibungen der Funktionen 
ins Internet gestellt werden wenn die Leute eh nur Zeugs zusammen 
kopieren wo sie nicht die blasseste Ahnen von haben was sie da machen.

Völlige Zeitverschwendung, sowas zu beschreiben, liest ja eh keiner!
- 
https://learn.microsoft.com/de-de/dotnet/standard/base-types/regular-expressions
- 
https://learn.microsoft.com/de-de/dotnet/api/system.text.regularexpressions.regex?view=net-7.0

von Schlaumaier (Gast)


Lesenswert?

Wieso einfach wenn es auch kompliziert geht.

Im Fall des TO reicht eine INSTR-Fuktion.

If instr((lcase(lines(i)), lcase(FilterText)) = 1 then

Instr gibt die Position des ersten Zeichens an, wenn der Text gefunden 
wird.
0 = nicht gefunden
1 = an erster Stelle des Suchtextes.

Es gibt auch eine interne Hilfe in den Sprachen = F1-Drücken (am besten 
mit Cursor über der gesuchten Funktion) dann wird die angezeigt. Ist 
sogar Offline-Installierbar.

Da instr auf Groß + Kleinschreibung achtet, macht die lcase - Funktion 
beide Suchbegriffe klein.

RegEx ist was feines, und spart ein hin+wieder viel Prg.-Code aber für 
so eine lausige Aufgabe absolut nicht erforderlich.

von IT-Abteilung (Gast)


Lesenswert?

rambo schrieb:
> Hi Leute, ich bin blutiger Anfänger was VB und programmieren an sich
> angeht und hab mir hier einen Codeschnipsel aus dem Internet kopiert.

Wenn du gerade programmieren lernst, dann lass den VB(NET) Dreck gleich 
links liegen und fang direkt mit einer vernünftigen Programmiersprache 
wie Python oder Rust an.

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.