【发布时间】:2021-01-21 05:36:09
【问题描述】:
我正在做如下模式匹配。但我没有得到正确的输出。请建议正确的代码以获得正确的输出。
代码
#! /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。 对啊!!!!!!
我应该在代码中进行哪些更改以获得预期的输出?请
【问题讨论】:
-
@YVRAO - 见:stackoverflow.com/a/7283308/6124824
-
index是一个你应该研究的函数。 -
看起来您希望正则表达式与字符串不匹配。可以通过多种方式确保它不匹配。交换字符串“Wrong”和“Right”也是如此。您需要解释正则表达式失败的原因。因为整个字符串更长?因为整个字符串在最后一个“1”之后有一个数字?这些原因需要不同的正则表达式。下面的答案是在猜测你的意图,正确与否无关紧要,你的问题不清楚。
-
在正则表达式 '.'用于匹配除换行符以外的任何字符。
-
是的,泰德·林格莫。感谢您的回答和 cmets。
标签: perl