免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 3
打印 上一主题 下一主题

新手:正则表达式匹配问题(在线等) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-17 17:49 |只看该作者 |倒序浏览
文本1:
‘ALARM_TEXT=告警序号(55074; 告警码描述(BTS掉站。); 告警级别(主要); 告警原因描述(BSC和BTS之间连接断开。); 告警发生位置(Server:377001,Bss:0,System:22); 告警发生时间(2009-05-14 00:03:05); 确认状态(0); 告警类型(4); 告警码(133157); 告警原因码(51006); 告警信息([subsystem=0,rack=1]); ’
一直用【\s*ALARM_TEXT\s*=\s*\S*\;\s*告警码描述\(([^\)]*)\s*\)\;】做匹配取中间一段值(BTS掉站。)。
最近文本内容有所变化,有一部分变成下面这段:
'ALARM_TEXT=NeType:BS8800|NeLocation:corp=dianxin,province=henan,SubNetwork=371003,SubNetwork=371013|vendor:ZTE|neName:   |alarmName:BTS掉站。|alarmLocation:框号=-1,槽号=-1,子系统号=0,对端=   (基站编号=74,基站名称=   ),服务器端口号=   |appendInfo:告警序号(387452); 告警码描述(BTS掉站。); 告警级别(主要); 告警原因描述(BSC和BTS之间连接断开。); 告警发生位置(Server:371013,Bss:0,System:74); 告警发生时间(2009-05-14 07:10:3; 确认状态(0); 告警类型(4); 告警码(133157); 告警原因码(51006); 告警信息([subsystem=0,rack=1] btsstate=0); '

小弟我临时看正则,也没弄出来,有没有办法,两段文本用一个表达式匹配。取出(BTS掉站。),谢谢先,在线等。

[ 本帖最后由 ketos 于 2009-5-17 17:51 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-17 22:02 |只看该作者
#!/usr/bin/perl
$str=<STDIN>;
$n=<STDIN>;
$c=1;
if($n=~ /\d/) {
while($n gt $c++)
{print "$str\n"; }
}

运行结果:
fred             #输入
3                 #输入
fred             #开始输出结果

fred

fred
但输入
fred              #输入
10                #输入
fred              #输出   ( 为什么只输出 一个 fred    输入 $n=10 要输出10个fred?  在ubuntu 8.04 perl 5.8.8
平台下运行)
谢谢!!!

论坛徽章:
0
3 [报告]
发表于 2009-05-17 22:50 |只看该作者

回复 #1 ketos 的帖子

  1. m/\Q告警码描述\E\(([^\)]+)\)/;
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-05-17 22:50 |只看该作者

回复 #2 ul990868 的帖子

没问题啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP