أنا جديدة على بيرل و لدي بعض الأسئلة regex
-
05-07-2019 - |
سؤال
أنا أدرس نفسي 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));
}
}
إذا كان لديك لحظة مساعدتي تفهم أسئلتي هي:
كيف السطر التالي في العمل:
([^"]*) # مرساة اسم
كيف السطر التالي في العمل:
([^>]*) # عنوان آخر
ماذا يعني "ستة" يعني في السطر التالي:
</dd>/ستة)
شكرا جزيلا مقدما على مساعدتك!أنا أيضا البحث عن إجابات على أسئلتي الخاصة في هذه اللحظة, ولكن كنت آمل شخص يمكن أن تعطيني دفعة!
المحلول
كيف السطر التالي في العمل...
([^"]*) # مرساة اسم
صفر أو أكثر من الأمور التي لا " ، القبض على النحو $1, $2, أو أيا كان, اعتمادا على عدد من الأقواس ( في نحن.
كيف السطر التالي في العمل...
([^>]*) # عنوان آخر
صفر أو أكثر من الأمور التي لا > القبض على النحو $1, $2, أو أيا كان.
ماذا يعني "ستة" يعني في السطر التالي...
</dd>/ستة)
- s = المباراة كما سطر واحد (هذا يعني فقط أن "." مباريات كل شيء ، بما في ذلك ، التي لن تفعل ذلك)
- انا = مطابقة حالة الأحرف
- x = تجاهل بيضاء في regex.
x
أيضا يجعل من الممكن وضع تعليقات في التعابير المنطقية نفسها ، حتى الأشياء مثل # Post title
هناك فقط التعليقات.
انظر perldoc perlre لمزيد من / معلومات أفضل.الرابط هو بيرل 5.10.إذا لم يكن لديك بيرل 5.10 يجب أن ننظر في perlre وثيقة الإصدار الخاص بك من بيرل بدلا من ذلك.
نصائح أخرى
[^"]*
يعني "أي سلسلة من صفر أو أكثر من الأحرف التي لا تحتوي على علامة اقتباس".هذا هو محاط ونقلت صنع وتشكيل سلسلة مقتبسة النوع الذي يلي<a name=
[^>]*
يشبه ما سبق ، فإنه يعني أي سلسلة لا تحتوي على>
.نلاحظ هنا أنه ربما يعني[^<]
, إلى المباراة حتى الافتتاح<
القادم الوسم, لا بما في ذلك الافتتاح الفعلي.- هذا هو مجموعة من php محددة regexp الأعلام.أعلم
i
يعني قضية حساسة ، ولا أدري عن بقية.
رمز ممتدة regex.انها تسمح لك لوضع فاصل و التعليقات في regexes.انظر perldoc perlre و perlretut.وإلا مثل العادية.
نفسه.
- الشخصيات regex المعدلات.