【问题标题】:Perl Range command mismatching similar strings with one ending in a carriage returnPerl Range 命令与一个以回车符结尾的相似字符串不匹配
【发布时间】:2019-02-16 15:14:15
【问题描述】:

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 范围的末尾添加一个字符串或元字符来帮助区分这两个字符串吗?

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

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

【问题讨论】:

  • 我正在尝试遵循代码和目标,足以以可读的方式重新格式化它们,但我无法充分理解您试图重新格式化的内容,更不用说回答了。您能否尝试更好地格式化您的问题,以便我们知道什么是代码、什么是示例文本以及问题是什么?
  • 您在寻找/^identifier cust_pri$/吗?

标签: regex perl


【解决方案1】:

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

【讨论】:

  • 另外,还有一个字边界\b 可能会有所帮助。
  • 范围末尾的 $ 符号有效。谢谢
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多