Perl Range命令将相似的字符串不匹配,其中一个以回车结尾

时间:2019-02-15 22:23:58

标签: regex perl

Perl中的range命令

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

与带有cust_pricust_pri_sip的字符串匹配,其中回车符紧接在字符串cust_pri(和cust_pri_sip)之后。我不希望在cust_pri_sip上找到匹配项,而只希望在cust_pri上找到匹配项。

我尝试分别放入\r\n和两个都无济于事。我可以在perl范围的末尾添加字符串或metachar来帮助区分这两个字符串吗?

我需要查看两种类型的接口的数据,但是在第一个range命令上,它也在收集数据,第二个range命令也在上班(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/

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

1 个答案:

答案 0 :(得分:1)

您可以使用public class Example { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); env.addSource(...) .filter(new Limiter()) .print(); env.execute(); } public static class Limiter implements FilterFunction<Event> { private transient int count = 0; @Override public boolean filter(Event e) throws Exception { if (++count <= 10) { return true; } else { return false; } } } } 明确排除_sip,也可以使用/^ identifier cust_pri(?!_sip)/来使cust_pri必须位于行尾,且之后不得有任何字符