一个简单的正则表达式问题

时间:2009-10-20 10:38:18

标签: c# regex

我试图了解正则表达式,以及如何使用它来制作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;

2 个答案:

答案 0 :(得分:2)

使用具有以下正则表达式的组(例如,您可以清除它)

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

将为您提供两个命名组,ID1和ID2,然后您可以填充。

我在第一次学习正则表达式时发现使用命名组更容易,所以你可以真正看到发生了什么。

看一下nregex来帮助练习和测试正则表达式。

    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(重命名为有意义的内容)来填充文本框或其他内容。

答案 1 :(得分:1)

对于此特定项目,您可以使用拆分字符串方法

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

使用arraylist中的第2和第3个值。