سؤال

أنا أدرس نفسي Perl و أنا أتعلم أفضل على سبيل المثال.على هذا النحو, أنا أدرس بسيط Perl أن تتخلص معين بلوق وجدت نفسي في حيرة حول بعض التعابير المنطقية البيانات.السيناريو يبدو التالية قطع html:

 <dt><a name="2004-10-25"><strong>October 25th</strong></a></dt>
 <dd>
   <p>
     [Content]
   </p>
 </dd>
 ... and so on.

وهنا على سبيل المثال النصي أنا أدرس:

#!/usr/bin/perl -w

use strict;
use XML::RSS;
use LWP::Simple;
use HTML::Entities;

my $rss = new XML::RSS (version => '1.0');
my $url = "http://www.linux.org.uk/~telsa/Diary/diary.html";
my $page = get($url);

$rss->channel(title       => "The more accurate diary. Really.",
          link        => $url,
          description => "Telsa's diary of life with a hacker:" 
                 . " the current ramblings");

foreach (split ('<dt>', $page))
{
if (/<a\sname="
         ([^"]*)     # Anchor name
         ">
         <strong>
         ([^>]*)     # Post title
         <\/strong><\/a><\/dt>\s*<dd>
         (.*)        # Body of post
         <\/dd>/six)
{
    $rss->add_item(title       => $2,
               link        => "$url#$1",
                   description => encode_entities($3));
}
}

إذا كان لديك لحظة مساعدتي تفهم أسئلتي هي:

  1. كيف السطر التالي في العمل:

    ([^"]*) # مرساة اسم

  2. كيف السطر التالي في العمل:

    ([^>]*) # عنوان آخر

  3. ماذا يعني "ستة" يعني في السطر التالي:

    </dd>/ستة)

شكرا جزيلا مقدما على مساعدتك!أنا أيضا البحث عن إجابات على أسئلتي الخاصة في هذه اللحظة, ولكن كنت آمل شخص يمكن أن تعطيني دفعة!

هل كانت مفيدة؟

المحلول

كيف السطر التالي في العمل...

([^"]*) # مرساة اسم

صفر أو أكثر من الأمور التي لا " ، القبض على النحو $1, $2, أو أيا كان, اعتمادا على عدد من الأقواس ( في نحن.

كيف السطر التالي في العمل...

([^>]*) # عنوان آخر

صفر أو أكثر من الأمور التي لا > القبض على النحو $1, $2, أو أيا كان.

ماذا يعني "ستة" يعني في السطر التالي...

</dd>/ستة)

  • s = المباراة كما سطر واحد (هذا يعني فقط أن "." مباريات كل شيء ، بما في ذلك ، التي لن تفعل ذلك)
  • انا = مطابقة حالة الأحرف
  • x = تجاهل بيضاء في regex.

x أيضا يجعل من الممكن وضع تعليقات في التعابير المنطقية نفسها ، حتى الأشياء مثل # Post title هناك فقط التعليقات.

انظر perldoc perlre لمزيد من / معلومات أفضل.الرابط هو بيرل 5.10.إذا لم يكن لديك بيرل 5.10 يجب أن ننظر في perlre وثيقة الإصدار الخاص بك من بيرل بدلا من ذلك.

نصائح أخرى

  1. [^"]* يعني "أي سلسلة من صفر أو أكثر من الأحرف التي لا تحتوي على علامة اقتباس".هذا هو محاط ونقلت صنع وتشكيل سلسلة مقتبسة النوع الذي يلي <a name=
  2. [^>]* يشبه ما سبق ، فإنه يعني أي سلسلة لا تحتوي على >.نلاحظ هنا أنه ربما يعني [^<], إلى المباراة حتى الافتتاح < القادم الوسم, لا بما في ذلك الافتتاح الفعلي.
  3. هذا هو مجموعة من php محددة regexp الأعلام.أعلم i يعني قضية حساسة ، ولا أدري عن بقية.
  1. رمز ممتدة regex.انها تسمح لك لوضع فاصل و التعليقات في regexes.انظر perldoc perlre و perlretut.وإلا مثل العادية.

  2. نفسه.

  3. الشخصيات regex المعدلات.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top