c#regex:从括号中获取数字
我写了正则表达式来分隔一些文本。我还希望能够从这个括号“[]”中获得值。这就是我到目前为止所做的:c#regex:从括号中获取数字,c#,regex,winforms,C#,Regex,Winforms,我写了正则表达式来分隔一些文本。我还希望能够从这个括号“[]”中获得值。这就是我到目前为止所做的: Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<C2>\S+) to (?<C3>\S+) (?<C4>\S+) (?<C5>.+))$"); 我想能够区分单词类型和数字3和45。现在我只需要同时输入[3]和[45]。我不知道这是否是您需要的:请告诉我 MatchCollecti
Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<C2>\S+) to (?<C3>\S+) (?<C4>\S+) (?<C5>.+))$");
我想能够区分单词类型和数字3和45。现在我只需要同时输入[3]和[45]。我不知道这是否是您需要的:请告诉我
MatchCollection names = Regex.Matches("Message from device type[3] to receiver type[45] done;", @"Message from device type\[(3)\] to receiver type\[(45)\] done;");
names[0].Groups[1].Value
names[0].Groups[2].Value
我不知道这是否是你需要的:让我知道
MatchCollection names = Regex.Matches("Message from device type[3] to receiver type[45] done;", @"Message from device type\[(3)\] to receiver type\[(45)\] done;");
names[0].Groups[1].Value
names[0].Groups[2].Value
如果在类型[n]
中使用Regex
仅获取类型
和n
:
Regex reg = new Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<T1>\S+)\[(?<N1>\d+)\] to (?<C3>\S+) (?<T2>\S+)\[(?<N2>\d+)\] (?<C5>.+))$");
var t1 = m.Groups["T1"].Value;//type
var n1 = m.Groups["N1"].Value;//3
var t2 = m.Groups["T2"].Value;//type
var n2 = m.Groups["N2"].Value;//45
Regex reg=newregex(@“^(?:(?消息)从(?\S+(?\S+)\[(?\d+)\]到(?\S+(\S+)\[(?\d+)\](?。+)$”;
var t1=m组[“t1”]值//类型
var n1=m组[“n1”]值//3.
var t2=m组[“t2”]值//类型
var n2=m.组[“n2”]值//45
如果在类型[n]
中使用Regex
仅获取类型
和n
:
Regex reg = new Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<T1>\S+)\[(?<N1>\d+)\] to (?<C3>\S+) (?<T2>\S+)\[(?<N2>\d+)\] (?<C5>.+))$");
var t1 = m.Groups["T1"].Value;//type
var n1 = m.Groups["N1"].Value;//3
var t2 = m.Groups["T2"].Value;//type
var n2 = m.Groups["N2"].Value;//45
Regex reg=newregex(@“^(?:(?消息)从(?\S+(?\S+)\[(?\d+)\]到(?\S+(\S+)\[(?\d+)\](?。+)$”;
var t1=m组[“t1”]值//类型
var n1=m组[“n1”]值//3.
var t2=m组[“t2”]值//类型
var n2=m.组[“n2”]值//45
如果此格式已修复,只需在正确的位置添加更多命名组即可
Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<C2>\S+)\[(?<C2n>\d+)\] to (?<C3>\S+) (?<C4>\S+)\[(?<C4n>\d+)\] (?<C5>.+))$");
如果此格式已修复,只需在正确的位置添加更多命名组
Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<C2>\S+)\[(?<C2n>\d+)\] to (?<C3>\S+) (?<C4>\S+)\[(?<C4n>\d+)\] (?<C5>.+))$");
您是否考虑过只使用IndexOf(“[”)来查找括号?regex是最简单的解决方案吗?我想继续使用regex,因为我还必须分隔文本的其余部分,所以我只需要添加有关括号的这部分。我现在不想更改所有内容。您考虑过只使用IndexOf(“[”)吗要找到括号?正则表达式是最简单的解决方案吗?我想继续使用正则表达式,因为我还必须分隔文本的其余部分,所以我只需要添加有关括号的这部分。我现在不想更改所有内容。它不起作用。我这样做(?[]\S+)。也许这是一种不好的方法?如果你指定你正在寻找的一组规则,会容易得多。(很难猜到你知道…)它不起作用。我是这样做的(?[]\s+)。也许这是一种不好的方法?如果你指定你正在寻找的一组规则,会容易得多。(很难猜到你知道…)伟大的@King King您的回答总是令人惊奇的。谢谢!我还有一个问题。我是这样做的:Regex(^(?(?命令)(?:回答|发送)从(?\S+)(?\d+))到(?\S+)(?\S+[(?\d+))(?。+)$),但我在C2中得到“type[3]”,在N1中我只得到“3”。我能做什么才能在C2中得到“type”“@user2592968你想得到整个
type[3]
还是只想得到type
和3
?我想得到type和3。伟大的@King King你的答案总是令人惊讶的。谢谢!我还有一个问题。我是这样做的,Regex(^(?:(?命令)(?:答案发送)从(?\S+)((?\S+[(?\d+)+)发送到(?\S+)(?\S+)(?\d+))$);但是我在C2中得到“type[3]”,在N1中我只得到“3”。我能做些什么才能在C2中只得到单词“type”?@user2592968你想得到整个类型[3]
还是只得到类型和3
?我想得到类型和3。
match.Groups["C2n"].Value