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