日期:2014-05-17  浏览次数:21116 次

在一个字符串里面按照位置查找一个数字的正则表达式如何写?
我想写一个方法,比如说有一个字符串A,还有一个我想查找的字符串B

我现在要在 A 中查找 第 n 个 B 之后的第 m 个数字,然后把这个数字按照string类型返回,这个方法该怎么写呢????????



------解决方案--------------------
C# code

 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;//

            }

------解决方案--------------------
C# code

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]就是这第五个数字

------解决方案--------------------
C# code

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]就是这第五个数字

}

------解决方案--------------------
C# code

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
C# code

                    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);