簡體   English   中英

一個簡單的正則表達式問題

[英]a simple Regex question

我試圖了解正則表達式,以及如何使用它來制止som日志並用結果填充som文本框。

如果我有這樣一條簡單的線

端口狀態:tro-S-02-av1 0/23

並想將tro-S-02-av1和0/23放在一個變量中

所有名稱都以av1結尾,因此常規的表達式保持架以此為基礎。

我在想這樣來嘗試將tro-S-02-av1的字符串變成文本框的值,但我無法正確處理,我該怎么做。

    Regex r;
    Match m;

    r = new Regex("$`\av1");
    m = r.Match("Port status: tro-S-02-av1 0/23");

    nodetbx.Text = m.Value;

使用帶有以下正則表達式的組(例如,您可能可以清理掉它)

Port status: (?<ID>[\d\w\-]+)\s(?<ID2>[\s\S]+)

然后會給您兩個命名的組,即ID1和ID2。

我發現在初次學習正則表達式時使用命名組更加容易,因此您可以真正了解正在發生的事情。

看看nregex也可以幫助您練習和測試regex。

    regex r = new regex("Port status: (?<ID>[\d\w\-]+)\s(?<ID2>[\s\S]+)");
    matchcollection mc = r.matches(MyText);
    foreach (match m in mc) {
        string ID1 = m.groups("ID1");
        string ID2 = m.groups("ID2");
    }

MyText是通過ReadLine在文件中循環的每一行,或者如果不是太大,則是整個文件。

然后,您可以使用ID1和ID2(重命名為有意義的名稱)填充文本框或其他內容。

對於此特定項目,您可以使用分割字符串方法

string[] words = s.Split(' ');

使用arraylist中的第二和第三值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM