Regex 需要模式匹配方面的帮助吗?

Regex 需要模式匹配方面的帮助吗?,regex,perl,Regex,Perl,但是如果值中有任何字符,例如 CODE: $str="Feature=Legacy--->dns3.1"; @fea=split/[=-->]/,$str; print $_ foreach(@fea); ACTUAL OUTPUT: Feature Legacy dns3.1 但我希望输出为功能遗留系统dns3.1 请帮助我如何解决此问题?您将拆分regexp定义为单个字符,即=、-或。 但您希望在=或-->处拆分 COD

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

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

ACTUAL OUTPUT: Feature
        Legacy
        dns3.1
但我希望输出为功能遗留系统dns3.1


请帮助我如何解决此问题?

您将拆分regexp定义为单个字符,即
=
-
。 但您希望在
=
-->
处拆分

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

OUTPUT: Feature
        Legacy
        System
        dns3.1

多部分分割的想法很有趣,匹配很简单

@fea = split /=|--->/, $str;
我建议的匹配更改也是“-”字符,更改为“-{1,}”,这将匹配从1到n的任意数量的“-”字符

附带说明,可读性通常是编码人员的问题,因此更多的空间和foreach循环是紧凑的,但是对于其他人来说,如果他们不是超级perl程序员,那么以后访问您的代码会很困难


我从来没有想过这样使用split,我喜欢它,现在看起来很明显,即使是老的perl狗也可以学习新的技巧,所以我感谢你。这是你的真实代码吗?总是
严格使用;使用警告我想说总是
使用警告进行调试<代码>使用严格的
破坏了Perl的许多优点。对不起,我的非正统观点。
@fea = split /=|-{1,}>/, $str;