首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在一个字符串里面按照位置查找一个数字的正则表达式怎么写

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

在一个字符串里面按照位置查找一个数字的正则表达式如何写?
我想写一个方法,比如说有一个字符串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); 

热点排行