reg. výrazy v řetězci   zodpovězená otázka

VB.NET, WinForms, Regulární výrazy

Dobrý den. Pracuji na editoru PHP, pro který potřebuji zvýrazňování syntaxe. Tak, v čem je problém:

Používám funkce:

RichTextBox1.SelectionStart = RichTextBox1.SelectionFind("$")
'najde všechny znaky $
RichTextBox1.SelectionColor = Color.Red

Ovšem problém je v tomto: V PHP jsou proměnné ve stylu $promenna , ovšem tento editor zvýrazní logicky pouze $, a už ne promenna. Takže mě napadlo použít regulární výraz, takže text nalezený pomocí .SelectionFind bude ${a libovolný počet jakýchkoli znaků} Jak prosím mám ten reg. výraz použít?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Opravička, samozřejmě RichTextBox1.Find() ;-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je prostě naprosto typická ukázka míchání několika problémů dohromady. Tipuju, že potřebujete vědět:

1) Jak se ve VB.NET pracuje s regulárními výrazy

2) Jak se v Rich Text boxu pracuje se selekcí

3) Jak zajistit, aby se mi text obarvoval rovnou při psaní.

ad 1) Zkuste si pohrát s následujícím kódem:

    RichTextBox1.Text = "Toto je $promenna a toto je $jinapromenna a toto je další, $uplnejinapromenna co tady je"
    Dim myMatches As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(RichTextBox1.Text, "\$.*?\s", System.Text.RegularExpressions.RegexOptions.Multiline)
    For Each myMatch As System.Text.RegularExpressions.Match In myMatches
      Debug.Print(myMatch.ToString)
    Next

ad 2) Toto si najdete sám ;-))

ad 3) Zkuste začít třeba tady: http://pietschsoft.com/post/2006/07/VBNE...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

ad 1) To právě netuším

ad 2) Pokud znáte nějakou dobrou dokumentaci k RichTextBoxu, dejte prosím vědět

ad 3) Za toto opravdu děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1) Zkuste si pohrát z kódem, co jsem Vám napsal.

2) Napište do google "rich text box" a světe div se, hned první odkaz povede na ofiko dokumentaci v MSDN. To je, co?

3) Není zač, našel jsem to při hledání odpovědi na Váš dotaz.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ve VB.NET se s regulárními výrazy pracuje za pomoci třídy Regex z System.Text.RegularExpressions. Reference je celkem jednoduchá:

Metoda IsMatch zjistí, zda zda-li argument odpovídá výrazu či ne, vrací tedy Boolean.

Metoda Match vyhledá ve vstupním textu první řetězec, který odpovídá výrazu.

Metoda Matches vyhledá ve vstupním textu všechny řetězce, které odpovídají výrazu a vrátí je v kolekci.

Metoda Replace vyhledá ve vstupním textu všechny řetězce, které odpovídají výrazu a nahradí je jinými hodnotami.

Některé z těchto funkcí vracejí proměnnou typu Match (popřípadě kolekci), ta představuje jeden nalezený řetězec, který odpovídá výrazu. Dostanete ho ven pomocí metody ToString. Tato třída poskytuje ještě další vlastnosti, jako třeba proměnné $1, $2, $3 a podobně.

Třída Regex se dá používat dvěma způsoby: Zaprvé můžete funkce využít jako sdílené:

Dim mcol As MatchCollection = Regex.Matches(vstup, "výraz")

Nebo zadruhé můžete využít konstruktoru a používat funkce pro referencovanou proměnnou:

Dim r As New Regex("výraz")
Dim mcol As MatchCollection = r.Matches(vstup)

Odkaz na oficiální referenci: http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback