首页 > 解决方案 > Perl Range 命令与一个以回车符结尾的相似字符串不匹配

问题描述

Perl 中的范围命令

RANGE
/^        identifier                              cust_pri/ .. /addr-type-none/

匹配带有cust_priandcust_pri_sip的字符串,其中回车符紧跟在字符串cust_pri(and cust_pri_sip) 之后。我不想要比赛,cust_pri_sip但只想要比赛cust_pri

我试着把\r\n两个都单独放进去,但都无济于事。是否有一个字符串或 metachar 我可以放入 perl 范围的末尾以帮助区分这两个字符串?

我需要查看两种类型接口的数据,但在第一个范围命令上,它也在收集数据,第二个范围命令也在收集(cust_pri_sip)导致我的第一个脚本出错。第二个作品找到。我无法更改输入数据,我需要一种方法来区分两者。

这是主 Perl 程序的子脚本

WIDTH = 65

DIRECTORY = /home/myfiles/

MASTER Config Lines

        identifier                              cust_pri
        description                             *
        addr prefix                             0.0.0.0
        network interfaces                      M00|1:\d*
        tcp media profile
        monitoring filters
        node functionality
        default location string
        alt family realm
        addr-type-none


RANGE
/^        identifier                              cust_pri/ .. /addr-type-none/
#

还有另一个与上面类似的子脚本

RANGE
/^        identifier                              cust_pri_sip/ .. /addr-type-none/

第一个脚本还收集两个脚本的数据,因为它匹配。

标签: regexperl

解决方案


您可以明确排除 _sip with/^ identifier cust_pri(?!_sip)/或者您可以说 cust_pri 必须在行尾,后面没有任何内容/^ identifier cust_pri$/


推荐阅读