Benutzer mit den meisten Antworten
RegEx; Brauche ein bisschen Hilfe zu RegEx, weil noch nie selbst verwendet

Frage
-
Hallo zusammen,
ich benötige mal ein bisschen Hilfe zu RegEx, das ich bisher noch nicht verwendet habe.
Folgendes Problem:
In einem RTF.Text befinden sich mehrere Teilstrings der Form:
\red0\green0\blue255 oder \red255\green255\blue255 oder ähnliche.
Ich möchte nun in einer Schleife alle solcher Strings herauslesen und in einem Array speichern, weiß aber nicht, wie ich das realisieren kann.Für Codierungshinweise bin ich sehr dankbar.
Grüße-
Dietrich
Antworten
-
Hallo Dietrich,
bspw. so:
Dim Source As String = "Start \red0\green0\blue255 Mitte \red255\green255\blue255 Ende." For Each Item As Match In Regex.Matches( Source, "\\red\d{1,3}\\green\d{1,3}\\blue\d{1,3}" ) TextBox1.AppendText( Item.Value & ControlChars.NewLine ) Next
\\ muss im Suchpattern sein, da \ ein Kontrollzeichen ist.
Für die weiteren Sachen siehe bspw.:
Sprachelemente für reguläre Ausdrücke – Kurzübersicht
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert dherrmann Dienstag, 11. Februar 2020 19:09
Alle Antworten
-
Hallo Dietrich,
kommen die immer in exakt dieser Reihenfolge vor?
Also \red<zahl>\green<zahl>\blue<zahl>?
Oder kann das auch mal anders aussehen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Dienstag, 11. Februar 2020 15:14
-
Hallo Dietrich,
bspw. so:
Dim Source As String = "Start \red0\green0\blue255 Mitte \red255\green255\blue255 Ende." For Each Item As Match In Regex.Matches( Source, "\\red\d{1,3}\\green\d{1,3}\\blue\d{1,3}" ) TextBox1.AppendText( Item.Value & ControlChars.NewLine ) Next
\\ muss im Suchpattern sein, da \ ein Kontrollzeichen ist.
Für die weiteren Sachen siehe bspw.:
Sprachelemente für reguläre Ausdrücke – Kurzübersicht
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert dherrmann Dienstag, 11. Februar 2020 19:09
-
Hallo Dietrich,
es geht auch ohne RegEx
Module Program Sub Main(args As String()) Console.WriteLine("Hello World!") GetColors() End Sub Private Sub GetColors() Dim colors As List(Of String) = New List(Of String)() From { "\red0\green0\blue0", "\red10\green01\blue10", "\red200\green200\blue200" } Dim cl As List(Of Byte()) = New List(Of Byte())() For Each c In colors Dim s = c.Split("\") Dim v As String = "" Dim color = New Byte(2) {} cl.Add(color) For Each item In s If item.Length > 0 Then Select Case item(0) Case "r"c v = item.Substring(3, item.Length - 3) color(0) = GetColorByte(v) Case "g"c v = item.Substring(5, item.Length - 5) color(1) = GetColorByte(v) Case "b"c v = item.Substring(4, item.Length - 4) color(2) = GetColorByte(v) End Select End If Next Next Dim la = 123 End Sub Private Function GetColorByte(ByVal s As String) As Byte Dim b As Byte = Nothing If Byte.TryParse(s, b) Then Return b Return 0 End Function End Module
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings- Bearbeitet Thomas Wycichowski Dienstag, 11. Februar 2020 17:13