在模式匹配方面需要帮助?

时间:2014-02-28 09:22:26

标签: regex perl

CODE:
    $str="Feature=Legacy--->dns3.1";
    @fea=split/[=-->]/,$str;
    print $_ foreach(@fea);

ACTUAL OUTPUT: Feature
        Legacy
        dns3.1

但是如果值中有任何字符,例如

CODE:
    $str="Feature=Legacy-system--->dns3.1";
    @fea=split/[=-->]/,$str;
    print $_ foreach(@fea);

OUTPUT: Feature
        Legacy
        System
        dns3.1

但我希望输出为Feature Legacy-system dns3.1

请帮我解决一下?

2 个答案:

答案 0 :(得分:1)

您将拆分正则表达式定义为SINGLE字符,可以是=->。 但您希望在=--->分割。

@fea = split /=|--->/, $str;

答案 1 :(得分:0)

多部分拆分的想法很有趣,匹配是

@fea = split /=|-{1,}>/, $str;

我建议的匹配更改也是' - '字符,更改为' - {1,}'这将匹配从1到n的任意数量的' - '字符。

侧面评论,可读性对于编码人员来说通常是一个问题,所以更多的空格和foreach循环是紧凑而且不错的,但是对于其他人来说,如果他们不是超级perl程序员,那么以后会很难实现。

我从来没有以这种方式使用分割,我喜欢它,现在看起来很明显,所以即使是老式的狗狗也可以学习新的技巧,所以我感谢你。