perl正则表达式 15

请教写一个正则表达式。要匹配如下的数据省农机所-2-RNC20988GSM小区2053320487_4812-RNC20487GSM小区4812健康大厦(W)-1-邻小区... 请教写一个正则表达式。要匹配如下的数据
省农机所-2-RNC20988 GSM 小区20533
20487_4812 - RNC20487 GSM 小区4812
健康大厦(W)-1-邻小区 30
我写的正则表达式是 .*\d+
这个我用工具测过了能够匹配这些数据。
但是我的目的是取这些数据最后面的数字。比如20533,4812,30

我写的perl语句是sub getgsmci(){
local ($sr,*data)=@_;
my $h=$data[0];
my $n;
my $ci;
if($h=~/.*(\d+)/)
{
$ci = $1;
}
return($h,$ci);
}

最后取到的值确实3,2,0,都是一位数字。所以请高手帮忙解决一下。谢谢。

建议看资料。上网搜搜的靠边站。本人急需解决该问题。
瞎说的赶紧闭嘴。
我提问的问题最终目的是如何取到后面的值,我写的perl语句只能取到最后面的一位数字。
我要的是最后面的所有数字,比如20533,4812,30,请结合我给出的数据

我的正则表达式匹配有点问题。之所以值取到最后的一位数字是因为.*把最后一位数字前面的数据都匹配了。所以只能取到最后一位数字。

请高手帮忙

还是不指望你们了。求人不如求自己。我也不知道你们是否验证过你们的那些是否正确。我自己搞好了。还是谢谢各位。公布下答案吧
($h=~/^.*\s+\W*(\d+)/)
展开
 我来答
haolian102
2009-12-29 · TA获得超过573个赞
知道小有建树答主
回答量:1054
采纳率:66%
帮助的人:487万
展开全部
楼上的有说对的
具体方法可以为
$h=~/(\d+)$/ 从末尾匹配所有数字字符
or
$h=~/.*?(\d+)$/非贪婪模式匹配数字前字符
or
$h=~/\D(\d+)$/从末尾起第一个非数字字符开始的所有数字字符

PS,如果行末有空格可在$前添加\s*来匹配行末空格
看楼主的代码对PERL应该有点理解了,这种正则看看参考就可以解决的。
Kinogam
2009-12-24 · TA获得超过178个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:300万
展开全部
我说吓正则吧
用\d+$就ok了
\d+$是匹配字符串末尾的数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2009-12-24 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
不明白你为什么不直接使用\d+呢,你前面的.*是贪婪的呀,不是很清楚你的需求,可能你也会认为是瞎说,耽误你的时间了,不好意思。

if($h=~/.*(\d+)/)
换为
if($h=~/(\d+)/)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a435633
2009-12-24 · TA获得超过1234个赞
知道大有可为答主
回答量:1018
采纳率:0%
帮助的人:0
展开全部
if($h=~/(\d+)$/) {
$ci = $1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式