【发布时间】:2023-01-23 18:45:52
【问题描述】:
所以这是我想要模式化的字符串:
1#2#3#4#360
它总是以数字开头,如果后面有数字,则后面应该跟一个“#”。如果后面没有数字,那就是它会停止的地方。
显然,这些是不允许的:
#1#2#3
1#2#
1#2#3#A#B
#2#3##
这是我试过的:
my $string = '1#2#3#4';
if ($string =~ /^[0-9]+(#[0-9])*/){
print("The format is good for $string");
}
else{
die "The format is wrong";
}
但是,程序仍然会转到 else 条件。我错过了什么吗?
谢谢!
【问题讨论】:
-
/^[0-9]+(?:#[0-9]+)*$/- 你错过了+和$。 -
这不受 Perl 的约束——你也会误解你的正则表达式在每一种其他风格/上下文/语言中。问问自己为什么使用
^而不使用任何$,或者为什么先使用+但之后不再使用。 -
如果我运行该代码,它不会进入 else 条件。您必须运行一些其他代码。也许您没有从运行的地方复制粘贴代码?