执行正则表达式替换 Perl

2024-02-15

假设我有IP10.23.233.34我想简单地交换233 for 234。第一个、第二个和最后一个八位字节未知。第三个八位位组是233 or 234。我想要进行替换,使其与 IP、子项相匹配,并保留其他所有内容,同时仍然切换最后一个八位字节。例如:

Input: 10.23.233.34

s/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){}233\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){}234\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/

Output: 10.23.234.34


这个问题确实不太适合正则表达式解决方案。相反,我会做类似以下的事情:

$in = "10.23.233.34";
@a = split /\./, $in;
if ($a[2] == '233') {
    $a[2] = '234';
}
print join(".", @a);

上面的代码比您可能想出的任何正则表达式都更具可读性。此外,下一个必须维护您的代码的人将能够真正阅读它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

执行正则表达式替换 Perl 的相关文章

随机推荐