有人可以向我解释以下内容,从替代开始意味着什么:
$delta_Value[$j] =~ s/(^.{12}).*$/$1/;
我想知道这是否意味着.
位于该行的开头以及它接下来的内容。
答案 0 :(得分:1)
此代码将保留12个第一个字符并丢弃其余字符。使用正则表达式并不是这样做的最佳方式......
^
表示字符串
的开头
.
是任何字符的占位符
{12}
表示 12次
.*$
表示所有内容,直到字符串的结尾
最后$1
表示获取第一对括号中的内容
/
只是Perl语法中的分隔符:第一部分是模式,第二部分是替换字符串。
等效代码:
$delta_Value[$j] = substr $delta_Value[$j], 0, 12
答案 1 :(得分:1)
^
开始与字符串的开头匹配(..)
捕获组(第一个是$1
,第二个是$2
等。).{12}
正好匹配除换行符之外的所有字符12次(并存入$1
).*$
匹配除换行符之外的任何字符,直到字符串结尾/$1/
替换s///
的部分,其中目前为止匹配的内容已替换为$1
同样可以通过仅匹配前12个字符而不是整个字符串
来实现$delta_Value[$j] = $1 if $delta_Value[$j] =~ /(^.{12})/;
答案 2 :(得分:1)
这意味着数组$j
的位置delta_value
会删除除前12个字符之外的所有内容
Perldoc是你的朋友:http://perldoc.perl.org/perlre.html
答案 3 :(得分:1)
替换运算符匹配并捕获字符串开头的第一个12
字符,同时删除该位置之后的所有字符,并将字符串替换为捕获组中匹配的字符串。
<强>解释强>:
( # group and capture to \1:
^ # the beginning of the string
.{12} # any character except \n (12 times)
) # end of \1
.* # any character except \n (0 or more times)
$ # before an optional \n, and the end of the string