当前位置:编程学习 > C#/ASP.NET >>

如何在字符串中提取连续的5位或5位以上的整数数字

桂城牡丹村机床厂乙5座404 528200*
e6224822@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   528248
平洲水边街11号301 528251
佛山市金鱼街133号佛山市汾江南路131号1区8座704房
13702999948
13902854983
13928642092
13928659939
高明市荷城区沿江路顺达巷3号2座401  528500
禅城区祖庙路33号百花广场12楼1209号345信箱
528000 佛山市燎原路88号501房
528135佛山市三水区南边镇市场西路10号401.
528200 桂城花苑广场37座701
 
我的表里面有一列这样的数据,我想找出里面那些混含有手机,邮编的信息,
如果能删除那些手机号码、邮编,还原里面的信息就更好 --------------------编程问答-------------------- 正则表达式提取应该可行。 --------------------编程问答-------------------- ^\d{5,}$ --------------------编程问答-------------------- 那应该怎么写呢?我不太会写 --------------------编程问答--------------------

大概的做了一个实验. --------------------编程问答--------------------
引用 3 楼 u011344259 的回复:
那应该怎么写呢?我不太会写


你具体要什么样子的,我也是新手,看看能不能帮你实现 --------------------编程问答-------------------- 是否这样?
string str = @"桂城牡丹村机床厂乙5座404 528200*
e6224822@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   528248
平洲水边街11号301 528251
佛山市金鱼街133号佛山市汾江南路131号1区8座704房
13702999948
13902854983
13928642092
13928659939
高明市荷城区沿江路顺达巷3号2座401  528500
禅城区祖庙路33号百花广场12楼1209号345信箱
528000 佛山市燎原路88号501房
528135佛山市三水区南边镇市场西路10号401.
528200 桂城花苑广场37座701";

            str = Regex.Replace(str,@"(\d{11}|[1-9]\d{5})(?!\d)",string.Empty);
            /*
             * 桂城牡丹村机床厂乙5座404 *
e6@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   
平洲水边街11号301 
佛山市金鱼街133号佛山市汾江南路131号1区8座704房




高明市荷城区沿江路顺达巷3号2座401  
禅城区祖庙路33号百花广场12楼1209号345信箱
 佛山市燎原路88号501房
佛山市三水区南边镇市场西路10号401.
 桂城花苑广场37座701
             */
--------------------编程问答--------------------
引用 6 楼 Return_false 的回复:
是否这样?
string str = @"桂城牡丹村机床厂乙5座404 528200*
e6224822@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   528248
平洲水边街11号301 528251
佛山市金鱼街133号佛山市汾江南路131号1区8座704房
13702999948
13902854983
13928642092
13928659939
高明市荷城区沿江路顺达巷3号2座401  528500
禅城区祖庙路33号百花广场12楼1209号345信箱
528000 佛山市燎原路88号501房
528135佛山市三水区南边镇市场西路10号401.
528200 桂城花苑广场37座701";

            str = Regex.Replace(str,@"(\d{11}|[1-9]\d{5})(?!\d)",string.Empty);
            /*
             * 桂城牡丹村机床厂乙5座404 *
e6@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   
平洲水边街11号301 
佛山市金鱼街133号佛山市汾江南路131号1区8座704房




高明市荷城区沿江路顺达巷3号2座401  
禅城区祖庙路33号百花广场12楼1209号345信箱
 佛山市燎原路88号501房
佛山市三水区南边镇市场西路10号401.
 桂城花苑广场37座701
             */



(?!\d) 这个是什么意思啊? --------------------编程问答-------------------- 好厉害啊
那个邮箱能不能去掉的啊 --------------------编程问答-------------------- 保留邮箱
str = Regex.Replace(str, @"\d{11}(?!\d)", string.Empty);
--------------------编程问答-------------------- 看错了
string str = @"桂城牡丹村机床厂乙5座404 528200*
e6224822@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   528248
平洲水边街11号301 528251
佛山市金鱼街133号佛山市汾江南路131号1区8座704房
13702999948
13902854983
13928642092
13928659939
高明市荷城区沿江路顺达巷3号2座401  528500
禅城区祖庙路33号百花广场12楼1209号345信箱
528000 佛山市燎原路88号501房
528135佛山市三水区南边镇市场西路10号401.
528200 桂城花苑广场37座701";

            str = Regex.Replace(str, @"(\d{11}|[1-9]\d{5})(?!\d)|\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", string.Empty);
            /*
             桂城牡丹村机床厂乙5座404 *

高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   
平洲水边街11号301 
佛山市金鱼街133号佛山市汾江南路131号1区8座704房




高明市荷城区沿江路顺达巷3号2座401  
禅城区祖庙路33号百花广场12楼1209号345信箱
 佛山市燎原路88号501房
佛山市三水区南边镇市场西路10号401.
 桂城花苑广场37座701
             */
--------------------编程问答-------------------- 哥,你太给力了
--------------------编程问答-------------------- 两点:
1.正则提取字符串中的数字;
2.手机号码是11为,邮编6位,

ps:可能要注意下里面的空格问题 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 因为人家  -喜欢正则- --------------------编程问答--------------------
引用 10 楼 Return_false 的回复:
看错了
string str = @"桂城牡丹村机床厂乙5座404 528200*
e6224822@163.com
高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   528248
平洲水边街11号301 528251
佛山市金鱼街133号佛山市汾江南路131号1区8座704房
13702999948
13902854983
13928642092
13928659939
高明市荷城区沿江路顺达巷3号2座401  528500
禅城区祖庙路33号百花广场12楼1209号345信箱
528000 佛山市燎原路88号501房
528135佛山市三水区南边镇市场西路10号401.
528200 桂城花苑广场37座701";

            str = Regex.Replace(str, @"(\d{11}|[1-9]\d{5})(?!\d)|\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", string.Empty);
            /*
             桂城牡丹村机床厂乙5座404 *

高明荷城文华路69号6楼602   (高明市北区和平路4号302?
黄岐省构件公司宿舍7-302   
平洲水边街11号301 
佛山市金鱼街133号佛山市汾江南路131号1区8座704房




高明市荷城区沿江路顺达巷3号2座401  
禅城区祖庙路33号百花广场12楼1209号345信箱
 佛山市燎原路88号501房
佛山市三水区南边镇市场西路10号401.
 桂城花苑广场37座701
             */


我发现有些数据超过11位数字的就只能删掉后面的11位数字,
能把超过11位的都删掉吗 --------------------编程问答-------------------- 列如一些身份证 --------------------编程问答-------------------- --------------------编程问答-------------------- 试试
str = Regex.Replace(str, @"(\d{11}[\dxX]*?(?=\s|$)|[1-9]\d{5}(?!\d))|\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", string.Empty);
--------------------编程问答-------------------- 没删前:联和皮厂有限公司(黄志坚13923160306)

删后:联和皮厂有限公司(黄志坚13923)

怎么就留下这个没删...

就是还有一些是固话加区号的,列如 0577-65659128这种又应该怎么处理
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,