Regex reg = new Regex(@"^(?:(?<C0>Message) from (?<C1>\S+) (?<C2>\S+\[(?<N1>\d+)\]) to (?<C3>\S+) (?<C4>\S+\[(?<N2>\d+)\]) (?<C5>.+))$");
Match m = reg.Match("Message from device type[3] to receiver type[45] done");
var n1 = m.Groups["N1"].Value;//3
var n2 = m.Groups["N2"].Value;//45
또한 n1
를 얻을 수 n2
type[...]
에서 :
Regex reg2 = new Regex(@"\S+\[(\d+)\]");
var n1 = reg2.Match(m.Groups["C2"].Value).Groups[0].Value;
var n2 = reg2.Match(m.Groups["C4"].Value).Groups[0].Value;
//or don't use Regex once you get `type[...]`
var s = m.Groups["C2"].Value.Split(new string[]{"[","]"}, StringSplitOptions.RemoveEmptyEntries);
var t = s[0];//type
var n = s[1];//3
~ g 단지 type
및 n
type[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
이 얻을 수있는 적절한 장소에 두 개라는 이름의 그룹을 추가 당신은 단지 괄호를 찾으려면 IndexOf ("[")를 사용하는 것을 고려 했습니까? 정규식은 가장 쉬운 솔루션입니까? –
정규 표현식을 사용하고 싶습니다. 나머지 텍스트도 분리해야하기 때문에 대괄호에 관한 부분 만 추가하면됩니다. 나는 모든 것을 지금 바꾸고 싶지 않아. – user2592968