用 else 的话, 你得把 /^\s+(.*)$/ 放在 else 块中,再做处理:<br>我是这样处理的:<br>-------------------------------------------------<br>#!/usr/bin/perl;<br>use strict;<br><br>my ($name, $title) = ();<br><br>while(&lt;DATA&gt;){<br><br>&nbsp;&nbsp;&nbsp; if (/^(\d+)\s+(.*)$/){<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;====\n$name\t$title\n=====\n&quot; if $name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $name = $1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $title = $2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next;<br><br>&nbsp;&nbsp;&nbsp; } elsif (/^\s+(.*)$/) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $title.= $1;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; print &quot;====\n$name\t$title\n=====\n&quot; if eof;<br>
<br>}<br><br><br>__DATA__<br>2222&nbsp; eewweasdds,asdasd.sadsadasdas<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddasdddddddddddddddddddda<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddddddddddddddddddddddddddd<br>2821&nbsp; easdddddddddddddddddddddddd<br>2192&nbsp; 288888888888888888888ass0a-das.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; as;dddsaddaa0---------22222222<br>
3030&nbsp; 123456<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 789<br><br>#-----------------END-----------------<br><br><div class="gmail_quote">2009/3/3 owen nirvana <span dir="ltr">&lt;<a href="mailto:freeespeech@gmail.com">freeespeech@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt; my ($name, $title);<br>
&gt; while (&lt;&gt;){<br>
&gt; if (/^(\d+)\s+(.*)$) {<br>
&gt; if ($name) {<br>
&gt; &nbsp;// 保存上一个 save $name, $title<br>
&gt; &nbsp;// 下面开始处理一个新的<br>
&gt; $name = &#39;&#39;;<br>
&gt; $title = &#39;&#39;;<br>
&gt; }<br>
&gt; $name = $1;<br>
&gt; $title .= $2;<br>
&gt; } elsif(/^\s+(.*)$/) {<br>
&gt; $title .= $1;<br>
&gt; }<br>
&gt; // save last one<br>
<br>
把自己的老问题翻上来,今天突然发现如果不是elsif, 而是else, 就只有匹配行的第二行会被合并,下一行就不会, why<br>
<a href="mailto:gtalk%3Afreeespeech@gmail.com">gtalk:freeespeech@gmail.com</a><br>
<br>
<br>
<br>
2008/11/18 &nbsp;&lt;<a href="mailto:china-pm-request@pm.org">china-pm-request@pm.org</a>&gt;:<br>
&gt; Send China-pm mailing list submissions to<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:china-pm@pm.org">china-pm@pm.org</a><br>
&gt;<br>
&gt; To subscribe or unsubscribe via the World Wide Web, visit<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a><br>
&gt; or, via email, send a message with subject or body &#39;help&#39; to<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:china-pm-request@pm.org">china-pm-request@pm.org</a><br>
&gt;<br>
&gt; You can reach the person managing the list at<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:china-pm-owner@pm.org">china-pm-owner@pm.org</a><br>
&gt;<br>
&gt; When replying, please edit your Subject line so it is more specific<br>
&gt; than &quot;Re: Contents of China-pm digest...&quot;<br>
&gt;<br>
&gt;<br>
&gt; Today&#39;s Topics:<br>
&gt;<br>
&gt; &nbsp; 1. Re: &nbsp;China-pm Digest, Vol 43, Issue 21 (truncatei)<br>
&gt;<br>
&gt;<br>
&gt; ----------------------------------------------------------------------<br>
&gt;<br>
&gt; Message: 1<br>
&gt; Date: Mon, 17 Nov 2008 22:01:40 +0800<br>
&gt; From: truncatei &lt;<a href="mailto:truncatei@gmail.com">truncatei@gmail.com</a>&gt;<br>
&gt; Subject: Re: [PerlChina] China-pm Digest, Vol 43, Issue 21<br>
&gt; To: <a href="mailto:china-pm@pm.org">china-pm@pm.org</a><br>
&gt; Message-ID:<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;<a href="mailto:c0d775f40811170601m6c2437aeyc2a3c19e7fe0a82e@mail.gmail.com">c0d775f40811170601m6c2437aeyc2a3c19e7fe0a82e@mail.gmail.com</a>&gt;<br>
&gt; Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
&gt;<br>
&gt; 2008/11/17 owen nirvana &lt;<a href="mailto:freeespeech@gmail.com">freeespeech@gmail.com</a>&gt;<br>
&gt;<br>
&gt;&gt; 谢谢,问题是归到上一行这样的操作,我不知道如何用正则表达式完成,那不等于是让表达式再回溯吗<br>
&gt;&gt; <a href="mailto:gtalk%3Afreeespeech@gmail.com">gtalk:freeespeech@gmail.com</a> &lt;<a href="mailto:gtalk%253Afreeespeech@gmail.com">gtalk%3Afreeespeech@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 还有一个问题,是关于提取数据的<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2222 &nbsp;eewweasdds,asdasd.sadsadasdas<br>
&gt;&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ddasdddddddddddddddddddda<br>
&gt;&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ddddddddddddddddddddddddddd<br>
&gt;&gt; &gt;&gt; 2821 &nbsp;easdddddddddddddddddddddddd<br>
&gt;&gt; &gt;&gt; 2192 &nbsp;288888888888888888888ass0a-das.<br>
&gt;&gt; &gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;as;dddsaddaa0---------22222222<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 诸如此类,左边很好办,可是右边并不限于单行,我该如何把这样的数据提取为 &nbsp;name title的格式存到数据表里呢<br>
&gt;&gt;<br>
&gt;&gt; &lt;<a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a>&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; my ($name, $title);<br>
&gt; while (&lt;&gt;){<br>
&gt; if (/^(\d+)\s+(.*)$) {<br>
&gt; if ($name) {<br>
&gt; &nbsp;// 保存上一个 save $name, $title<br>
&gt; &nbsp;// 下面开始处理一个新的<br>
&gt; $name = &#39;&#39;;<br>
&gt; $title = &#39;&#39;;<br>
&gt; }<br>
&gt; $name = $1;<br>
&gt; $title .= $2;<br>
&gt; } elsif(/^\s+(.*)$/) {<br>
&gt; $title .= $1;<br>
&gt; }<br>
&gt; // save last one<br>
&gt;<br>
&gt; 好久不写了,上面的代码或许会有些错误,大概的流程整理出来了:<br>
&gt; 每次遇到数字就开始一条数据,否则视为向当前数据中添加title<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; &quot;老是呆在那里不好,我们随生活需要四处迁徙,多年以来的梦想,至今还未实现,压力堵塞了我们的耳朵,工作生涯到了尽头,还是一无所有,我们应该给后人留下点儿什么,教训是不会刻在纪念碑上的,光荣的命令和指引之手,也可请求,简单地改变一下角度就足够了&quot;<br>
&gt; -------------- next part --------------<br>
&gt; An HTML attachment was scrubbed...<br>
&gt; URL: &lt;<a href="http://mail.pm.org/pipermail/china-pm/attachments/20081117/e8fdbb3d/attachment-0001.html" target="_blank">http://mail.pm.org/pipermail/china-pm/attachments/20081117/e8fdbb3d/attachment-0001.html</a>&gt;<br>

&gt;<br>
&gt; ------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; China-pm mailing list<br>
&gt; <a href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a><br>
&gt;<br>
&gt; End of China-pm Digest, Vol 43, Issue 23<br>
&gt; ****************************************<br>
&gt;<br>
_______________________________________________<br>
China-pm mailing list<br>
<a href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a></blockquote></div><br>