[Visual basic] Wyrażenia regularne

0

Siemka. Od razu przejdę do rzeczy, otóż w jaki sposób mogę wyciągnąć dane, w sensie:

Dim this_string = "testktest <ub>tutaj</ub tekst testk"

Jak, w jaki sposób mogę z tej zmiennej wyciągnąć tutaj. A i przyjmując, że tekst pomiędzy znacznikami <ub></ub> jest zawsze inny.

Będę wdzięczny za każdą pomoc.

Pozdrawiam maskow.

0

Masz 2 możliwości (przy czym składnie będziesz musiał dostosować sam bo nie jestem pewien jak to będzie w VB a nie chcę wprowadzać w błąd):

albo (C#)

int start = this_string.IndexOf("<ub>") + 4;
int end = this_string.IndexOf("</ub>");
int len = end - start;
string inner = this_string.Substring(start, len);

albo, lepiej ale trudniej, regexami (C#)

Regex r = new Regex("<ub>[^<]*</ub>");
Match m = r.Match(this_string);
string inner = m.Value;
0

MSM, pozmieniałem to pod VB i jakoś nie działa. Czyli np Dim inner = this_string.Substring(start, len) zwraca pełny tekst, a nie tylko test w znacznikach.

Pomoże ktoś?

0

a caly kod mozesz wkleic, bo pewnie ze policzyles start i len

0
 Dim czs = RichTextBox1.Text
        Label5.Text = RichTextBox1.Text
        Dim this_string = RichTextBox1.Text
        RichTextBox1.Text = ""
        Dim start = this_string.IndexOf("<ub>") + 4
        Dim ends = this_string.IndexOf("</ub>")
        Dim len = ends - start
        Dim inner = this_string.Substring(start, len)

        RichTextBox1.Text = inner

Co tutaj jest źle?

0
Dim Wzorzec As String = "\<ub\>(?<dop1>.+?)\<\/ub" '.+? to jeden lub więcej dowolnych znaków (kwantyfikator ? leniwy, czyli do pierwszego wystąpienia ciągu za nim)
Dim WyrazenieRegularne As Regex = New Regex(Wzorzec, RegexOptions.Singleline)
Dim Dopasowanie As Match = WyrazenieRegularne.Match(this_string)
If Dopasowanie.Success Then 'Znaleziono dopasowanie
     Dim _dop1 as String = Dopasowanie.Result("${dop1}")
Else 'Nie znaleziono dopasowania
End If

Musisz nauczyć się wyrażeń regularnych, to konieczność. Zrobisz to raz i potem już będziesz umiał wyciągnąć cokolwiek zechcesz z czego zechcesz. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0