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

标签 perl

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

#! /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/

相关文章:

perl - 如何对数组进行排序,以便某些文件扩展名排序到顶部?

linux - Perl 脚本异常行为/回收内存

perl - 这为啥不死?

perl - 使用 wget 和 Perl 脚本从网页中提取信息

linux - 检查密码linux用户

security - Perl 解析器可以安全地解析任意代码吗?

java - 无法从 Java 调用 Perl 脚本

perl - 手动安装 Perl 模块

mysql - Perl DBI MySQL 插入占位符和外键

perl - 如何使用 Perl 填写 Web 表单?