perl 正则表达式⼀^尀s*(.*?)尀s*尀=尀s*尀"(.*)尀"⼀是什么意思?

2024-11-17 07:26:09
推荐回答(5个)
回答1:

代码没有问题。
将db.ini文件的内容逐行读出来,并进行正则匹配,将所有符合下面匹配规则的行的等号左边有效字符串(可能会为空)作为变量的名字,并将等号右边的有效字符串作为变量的值

匹配规则是,字符串必须是以至少一个空格开头,然后有或者没有除了换行符以外的任意字符串,然后再接至少一个空格,然后是=号,然后再接至少一个空格,然后是冒号”,然后是除了换行符以外的任意字符串,最后是冒号“

回答2:

if (/^\s*(.*?)\s*\=\s*\"(.*)\"/) #匹配文件中每一行第一个字符串且该字符串要符合这样的规则:是连续的几个相同字符=连续的几个相同字符 如aaa=aaa 或者a=bbb或者 $$$=%%%%
$$1 = $2; # 将第一个匹配的字符串设置为变量对它赋值为等号右边的字符串
如: $aaa="aaa"或者$a="bbb"

希望能满意 呵呵

回答3:

/^\s*(.*?)\s*\=\s*\"(.*)\"/
文件每次读一行,上述正则表达式默认匹配$_变量,主要是为了匹配ini文件格式,该表达式匹配格式为:
空格+任意的主键值,也可没有+空格=空格+要有双引号括起来的内容
例:
no = "1234"
= "2345"
注意上面的空格个数

回答4:

这段perl脚本是有问题的,要想打印出真正的$符号,必须要用到转义符\,所以应改写成

if (/^\s*(.*?)\s*\=\s*\"(.*)\"/){
\$$1 = $2;
至于含义,我认为应该是:
然后把其中每一行 xxxx xxxx="BxxxBxxBx" 的内容
赋值变量$xxxx xxxx=BxxxBxxBx,我在perl 5.8.6中试过

回答5:

将db.ini文件的内容读出来。
然后把其中每一行 AAA=BBB 的内容
赋值变量$AAA=BBB