gpt4 book ai didi

perl - PERL 中的模式匹配以句点 "."结尾

转载 作者:行者123 更新时间:2023-12-03 20:03:26 33 4
gpt4 key购买 nike

我正在做模式匹配如下。但我没有得到正确的输出。请建议正确的代码以获得正确的输出。
代码

#! /usr/bin/perl -w

my $subString = "1.3.6.1.2.1.26.2.1.1.1.";
my $wholeString = "1.3.6.1.2.1.26.2.1.1.12.1";

if ($wholeString =~ m/^$subString/)
{
print "matched string is : $&\n";
print "Wrong!!!!\n";
}
else
{
print "matched string is : $&\n";
print "Right!!!!!\n";
}
实际输出:
匹配的字符串是:1.3.6.1.2.1.26.2.1.1.12
错误的!!!!
预期输出:
匹配的字符串是:1.3.6.1.2.1.26.2.1.1.1。
对!!!!!
我应该在代码中更改什么以获得预期的输出?请

最佳答案

点在正则表达式中具有特殊含义 - 它的意思是“匹配此处的任何字符”。所以“.1”。在您的子字符串末尾很高兴匹配测试字符串中的“.12”。
要删除点(和所有其他特殊字符)的特殊含义,您可以使用 \Q转义序列。

if ($wholeString =~ m/^\Q$subString/)
但是(正如评论中已经指出的那样),正则表达式匹配在这里可能不是正确的工具。您可能需要 index() 功能。
if (index($wholeString, $subString) == 0)

关于perl - PERL 中的模式匹配以句点 "."结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64224110/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com