日期:2014-05-17 浏览次数:21116 次
string tempStr = @"aaabbbcccaaagggaaa123456789"; string pattern = @"(?<=([\s\S]*aaa){3}[\s\S]{7}).";//aaa相当于字符串B 3相当于n 7相当于m+1 MatchCollection mc = Regex.Matches(tempStr, pattern, RegexOptions.Multiline|RegexOptions.IgnoreCase); for (int i = 0; i < mc.Count; i++) { string ss = mc[i].Value;//得到8 //string ss = mc[i].Groups["id"].Value; //string text = mc[i].Groups["text"].Value;// }
------解决方案--------------------
string str = "122bbbbb12345"; string regex_str = @"[b]{5}[\d]{5}";//5个b后面的第5个数字 Regex r = new Regex(regex_str); // 定义一个Regex对象实例 Match m = r.Match(str); // 在字符串中匹配 Console.WriteLine(str[m.Index + 9]);//m.Index表示匹配这个字串的位置,str[m.Index + 9]就是这第五个数字
------解决方案--------------------
public string getFifthDigit(string s) { string regex_str = @"[b]{5}[\d]{5}";//5个b后面的第5个数字 Regex r = new Regex(regex_str); // 定义一个Regex对象实例 Match m = r.Match(s); // 在字符串中匹配 return str[m.Index + 9];//m.Index表示匹配这个字串的位置,str[m.Index + 9]就是这第五个数字 }
------解决方案--------------------
public string getFifthDigit(string str) { string regex_str = @"[b]{5}[\d]{5}";//5个b后面的第5个数字 Regex r = new Regex(regex_str); // 定义一个Regex对象实例 Match m = r.Match(str); // 在字符串中匹配 return str[m.Index + 9];//m.Index表示匹配这个字串的位置,str[m.Index + 9]就是这第五个数字 }
------解决方案--------------------
两个例子,index是要找的第几个数,例如第2个数为-7.0,第7个数-7.0
strIndex为第几个bb或aa
string A = "a bb 1 bb 1 2 bb 1 -7.0 3 cc 1 cc 1 2 cc 1 2 3 "; string B = "bb"; int index = 2; int strIndex = 3; Regex reg = new Regex(string.Format(@"(?:\s{0}(?:\s[\d.-]*)*){{{1}}}\s{0}(\s[\d.-]+)+", B, strIndex - 1)); Console.WriteLine(reg.Match(A).Groups[1].Captures[index - 1].Value); ================================================================================ A = " a aa aa aa aa aa aa 0.1 0.2 -0.3 4 5 6.0 -7.0"; B = "aa"; index = 7; strIndex = 5; reg = new Regex(string.Format(@"(?:\s{0}(?:\s[\d.-]*)*){{{1}}}\s{0}(\s[\d.-]+)+", B, strIndex - 1)); Console.WriteLine(reg.Match(A).Groups[1].Captures[index - 1].Value);