perl 正则表达式s///的2个疑问
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 16:25:14
perl 正则表达式s///的2个疑问
/usr/perl/bin
use warnings;
use strict;
my $in=$ARGV[0];
$out=$in;
$out=~s/(\.w+)?$/\.out/;
print $out;
open LOG1,"$out";
$out=~s/(\.w+)?$/\.out/;
1.这一行为什么必须加上?才能匹配并且替换成.out,$out=~s/(\.w+)$/\.out/; 为什么不能替换
2.\.out--替换成的内容为什么不加反斜杠也可以呢?
/usr/perl/bin
use warnings;
use strict;
my $in=$ARGV[0];
$out=$in;
$out=~s/(\.w+)?$/\.out/;
print $out;
open LOG1,"$out";
$out=~s/(\.w+)?$/\.out/;
1.这一行为什么必须加上?才能匹配并且替换成.out,$out=~s/(\.w+)$/\.out/; 为什么不能替换
2.\.out--替换成的内容为什么不加反斜杠也可以呢?
他这个替换的作用是把 一个文件名例如 a.txt 替换成 a.out
或者无后缀的文件名 b 替换为 b.out
所以你的问题:
1. 加上? 是为了可以匹配有后缀和无后缀的两种情况,还有你的正则写错了 w 前面应该加个\
写成 s/(\.\w+)?$/.out/ 才对
2. s后面的替换内容不是正则表达式,是一个字符串形式,是不会理解+? 这种东西的,不需要转义
字符串里面怎么写,那里就怎么写
就像 print "\.out"; 这里加不加反斜杠都可以,但是推荐是不加的.
或者无后缀的文件名 b 替换为 b.out
所以你的问题:
1. 加上? 是为了可以匹配有后缀和无后缀的两种情况,还有你的正则写错了 w 前面应该加个\
写成 s/(\.\w+)?$/.out/ 才对
2. s后面的替换内容不是正则表达式,是一个字符串形式,是不会理解+? 这种东西的,不需要转义
字符串里面怎么写,那里就怎么写
就像 print "\.out"; 这里加不加反斜杠都可以,但是推荐是不加的.
perl 正则表达式/^\s*(.)\s*\=\s*\"(.
请问下列perl的正则表达式是什么意思?
perl 正则表达式问题
匹配1个或者2个英文字母的正则表达式
正则表达式([\s\S]*?
正则表达式(^|\\s)
正则表达式("[\w-\s]+")是什么意思?
正则表达式 /^[-a-z.-@,'s]*$/i 的含义
split("\\s{1,}")里面的正则表达式什么意思?
java 正则表达式 ”(?:[ ]{2}.){4}(?:\\(|(|\\[|【|〔)[ \\s]*[0-90-9][
perl 正则表达式 my $a = "abc123xyz"; my $tmp = "123"; if ($a /abc
正则表达式如何匹配连续空格2个以上的所有空格