Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 这行Perl没有意义吗?s/^(\d+;)\b/$1/sg_Regex_Perl - Fatal编程技术网

Regex 这行Perl没有意义吗?s/^(\d+;)\b/$1/sg

Regex 这行Perl没有意义吗?s/^(\d+;)\b/$1/sg,regex,perl,Regex,Perl,这一行Perl真的起作用了吗 $variable =~ s/^(\d+)\b/$1/sg; 我能想到的唯一一件事是,$1或$&可能会被重复使用,但紧接着是 $variable =~ s/\D//sg; 把这两行放在一起,第一行是没有意义和可移动的吗?看起来是这样,但我在这个老节目中已经看过多次了,我想确定一下 $variable =~ s/^(\d+)\b/$1/sg; 开头的锚点^使/g修饰符无效 字符串中缺少通配符,使得/s修饰符无效,因为它可以使也与换行符匹配 由于\b和^是零宽度

这一行Perl真的起作用了吗

$variable =~ s/^(\d+)\b/$1/sg;
我能想到的唯一一件事是,
$1
$&
可能会被重复使用,但紧接着是

$variable =~ s/\D//sg;
把这两行放在一起,第一行是没有意义和可移动的吗?看起来是这样,但我在这个老节目中已经看过多次了,我想确定一下

$variable =~ s/^(\d+)\b/$1/sg;
  • 开头的锚点
    ^
    使
    /g
    修饰符无效
  • 字符串中缺少通配符
    ,使得
    /s
    修饰符无效,因为它可以使
    也与换行符匹配
  • 由于
    \b
    ^
    是零宽度断言,并且是捕获组之外的唯一内容,因此此替换根本不会更改变量
这个正则表达式所做的唯一一件事就是将数字捕获到
$1
,如果找到它们的话

随后的正则表达式

$variable =~ s/\D//sg;
将删除所有非数字,使变量仅为一个长数字。如果要分离第一部分(由第一个正则表达式匹配),唯一的方法是从第一个正则表达式访问
$1

但是,在这种情况下,最好简单地编写第一个正则表达式:

$variable =~ /^(\d+)\b/;
如果应该使用捕获:

my ($num) = $variable =~ /^(\d+)\b/;
“污染模式”正在使用吗?(使用-T选项调用脚本。)


可能是用来清理(即,清除)用户输入。

不,没有使用,但非常有趣!我从来不知道这件事。