yanmai
Goto Top

C-sharp SearchPattern (Regex)

Hallo ihr Administratoren,
ich verwende ein AUtocpmpletemenu Plugin. Dort habe ich Snippets, die dann sozusagen completed werden. Beim erstellen des Menüs gibt es die Eigenschaft SearchPattern. Bei der Sprache CSS bsp gibt es keine Probleme, da es dort normale Worte sind. Bei html gibt es aber <html>... und id. Nun brauche ich Regex Pattern, die normale Buchstaben zulassen und das Zeichen <... Wie mache ich das?

Content-ID: 343913

Url: https://administrator.de/forum/c-sharp-searchpattern-regex-343913.html

Ausgedruckt am: 23.12.2024 um 00:12 Uhr

133417
133417 19.07.2017 aktualisiert um 20:33:09 Uhr
Goto Top
Sonderzeichen im Regex-String werden mit Backslash escaped!
Bsp.
{ wird zu \{
$ wird zu \$
+ wird zu \+
usw.
Willst du für den User die Eingabe einfacher machen so dass er Sonderzeichen ganz normal eingeben kann gibt es die statische Methode Escape() im Namespace System.Text.RegularExpressions.Regex
Beispiel
string regex = System.Text.RegularExpressions.Regex.Escape(@"String mit S()nderze.chen{}")  
Diese Methode escaped alle Sonderzeichen automatisch
String\ mit\ S\(\)nderze\.chen\{\}
Gruß
Yanmai
Yanmai 19.07.2017 um 20:50:08 Uhr
Goto Top
Vielen Dank, aber ich brauche ja Sonderzeichen und normale Buchstaben
133417
133417 19.07.2017 aktualisiert um 21:03:52 Uhr
Goto Top
Das ist doch egal du kannst ja selbst steuern ob es ein Regex-Zeichen mit besonderer Bedeutung sein soll oder eben nicht indem du es escapst oder nicht !! Ich versteh dein Problem nicht ?!
Normale Zeichen werden ja nicht escaped.
Also beschreibe dein Problem mal vernünftig, nicht in so nichtssagenden Einzeilern. DANKE!
Yanmai
Yanmai 19.07.2017 um 21:20:40 Uhr
Goto Top
Ich habe 2 Arrays. Eins für <html>..., also mit < und eins für die Argumente in HTML wie id, class und so weiter. Dann habe ich eine Methode, in der das AutoCompleteMenu erstellt wird, welche am Programmstart ausgeführt wird. Ich habe jetzt schon rumprobiert und gemerkt, dass wenn ich die Eigenschaft SearchPattern auslasse, kommen mir alles Argumente. Setze ich als SearchPattern nur das <, dann kommen nur Worte mit <html>... Ich brauche aber beides.

Zur Info: Ich benutze dieses AutoCompleteMenu (Package-Name) AutoCompleteMenu-ScintillaNET, wozu man hier die Dokumentation findet.

 try
            {
                autoCompleteMenu_html.Colors = colors;
                autoCompleteMenu_html.AppearInterval = 1;
                autoCompleteMenu_html.AutoPopup = true;
                autoCompleteMenu_html.CaptureFocus = false;
                autoCompleteMenu_html.LeftPadding = 30;
                autoCompleteMenu_html.MinFragmentLength = 1;
                autoCompleteMenu_html.Font = new Font("Consolas", 10f);  
                autoCompleteMenu_html.AllowsTabKey = true;
                autoCompleteMenu_html.ToolTipDuration = 1;
                autoCompleteMenu_html.ImageList = this.imageList2;
                autoCompleteMenu_html.SearchPattern = "\\<";  
                var items = new List<AutocompleteItem>();

                foreach (var item in autoCompleteData.autoCompleteMenuData_html)
                    items.Add(new SnippetAutocompleteItem(item) { ImageIndex = 0 });
                foreach (var item in autoCompleteData.autoCompleteMenuData_html_arguments)
                    items.Add(new SnippetAutocompleteItem(item) { ImageIndex = 0 });
                autoCompleteMenu_html.SetAutocompleteItems(items);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
Yanmai
Yanmai 21.07.2017 um 09:26:47 Uhr
Goto Top
Ihr brauche eure Hilfe
mayho33
mayho33 10.12.2017 um 13:48:49 Uhr
Goto Top
versuche mal www.regexr.com.

Die verwende uch auch immer um zu testen bevor ich das in meinen Code einbaue.

Du kannst aber auch mal nach regex cheatsheet suchen. Da bekommst du einen guten Überblick.