这行Perl真的能做什么吗?
$variable =~ s/^(\d+)\b/$1/sg;
Run Code Online (Sandbox Code Playgroud)
我唯一能想到的是,$1
或者$&
可能会被重复使用,但紧随其后.
$variable =~ s/\D//sg;
Run Code Online (Sandbox Code Playgroud)
将这两条线放在一起,第一线是无意义和可拆卸的吗?它似乎会是,但我在这个旧程序中已多次看到它,并希望确定.
TLP*_*TLP 12
$variable =~ s/^(\d+)\b/$1/sg;
Run Code Online (Sandbox Code Playgroud)
^
开头的锚点使/g
修饰符变得无用..
字符串中缺少通配符会使/s
修饰符无效,因为它.
也可以使换行符匹配换行符.\b
和^
是零宽度断言,以及捕获组之外的唯一事物,这种替换根本不会改变变量.这个正则表达式唯一做的就是捕获数字$1
,如果找到它们.
随后的正则表达式
$variable =~ s/\D//sg;
Run Code Online (Sandbox Code Playgroud)
将删除所有非数字,使变量只是一个长数字.如果想要分离第一部分(与第一个正则表达式匹配),唯一的方法是$1
从第一个正则表达式访问.
但是,在这种情况下,第一个正则表达式可以更好地编写:
$variable =~ /^(\d+)\b/;
Run Code Online (Sandbox Code Playgroud)
如果应该使用捕获:
my ($num) = $variable =~ /^(\d+)\b/;
Run Code Online (Sandbox Code Playgroud)