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

openINPUT,"c:\\cellopt\\query_reg\\db.ini";while(<INPUT>){chomp;if(/^\s*(.*?)\s*\=\s*... open INPUT, "c:\\cellopt\\query_reg\\db.ini";
while(<INPUT>){
chomp;
if (/^\s*(.*?)\s*\=\s*\"(.*)\"/){
$$1 = $2;
}
}
close INPUT;
原程序执行有效.这个段落是原程序一部分,我查看过,原样复制过来,没有问题的.
展开
 我来答
wavellitesym
2011-02-16
知道答主
回答量:19
采纳率:100%
帮助的人:10.9万
展开全部
代码没有问题。
将db.ini文件的内容逐行读出来,并进行正则匹配,将所有符合下面匹配规则的行的等号左边有效字符串(可能会为空)作为变量的名字,并将等号右边的有效字符串作为变量的值

匹配规则是,字符串必须是以至少一个空格开头,然后有或者没有除了换行符以外的任意字符串,然后再接至少一个空格,然后是=号,然后再接至少一个空格,然后是冒号”,然后是除了换行符以外的任意字符串,最后是冒号“
haiwei5772
2011-02-16
知道答主
回答量:23
采纳率:0%
帮助的人:20.3万
展开全部
if (/^\s*(.*?)\s*\=\s*\"(.*)\"/) #匹配文件中每一行第一个字符串且该字符串要符合这样的规则:是连续的几个相同字符=连续的几个相同字符 如aaa=aaa 或者a=bbb或者 $$$=%%%%
$$1 = $2; # 将第一个匹配的字符串设置为变量对它赋值为等号右边的字符串
如: $aaa="aaa"或者$a="bbb"

希望能满意 呵呵

参考资料: perl编程24学时教程

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liaomin545
2011-02-16 · TA获得超过103个赞
知道答主
回答量:39
采纳率:0%
帮助的人:42万
展开全部
/^\s*(.*?)\s*\=\s*\"(.*)\"/
文件每次读一行,上述正则表达式默认匹配$_变量,主要是为了匹配ini文件格式,该表达式匹配格式为:
空格+任意的主键值,也可没有+空格=空格+要有双引号括起来的内容
例:
no = "1234"
= "2345"
注意上面的空格个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cliicy
2011-02-16 · 超过19用户采纳过TA的回答
知道答主
回答量:96
采纳率:100%
帮助的人:30.9万
展开全部
这段perl脚本是有问题的,要想打印出真正的$符号,必须要用到转义符\,所以应改写成

if (/^\s*(.*?)\s*\=\s*\"(.*)\"/){
\$$1 = $2;
至于含义,我认为应该是:
然后把其中每一行 xxxx xxxx="BxxxBxxBx" 的内容
赋值变量$xxxx xxxx=BxxxBxxBx,我在perl 5.8.6中试过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
talorkitty
2011-02-16 · TA获得超过771个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:440万
展开全部
将db.ini文件的内容读出来。
然后把其中每一行 AAA=BBB 的内容
赋值变量$AAA=BBB
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式