الفرق بين المراجعتين ل"Ruby/Regexp/match"

من موسوعة حسوب
< Ruby‏ | Regexp
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>match‎</code> الخاص بالصنف <code>Regexp</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
 
ط
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>match‎</code> الخاص بالصنف <code>Regexp</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>Regexp.match‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Regexp]]
 
[[تصنيف: Ruby Regexp]]
يُعيد التابع <code>match</code> كائنًا من النوع <code>MatchData</code> يصف المطابقة، أو يعيد <code>nil</code> إذا لم يكن هناك تطابق. هذا يُكافئ استرداد قيمة المتغير الخاص <code>$~</code> بعد مطابقة عادية. في حال تمرير الوسيط الثاني،، فإنه يحدد الموضع في السلسلة النصية لبدء البحث.
+
يُعيد التابع <code>match</code> كائنًا من النوع <code>[[Ruby/MatchData|MatchData]]</code> يصف المطابقة بين تعبير نمطي وسلسلة نصية، أو يعيد القيمة <code>nil</code> إذا لم يكن هناك تطابق. هذا يُكافئ استرداد قيمة المتغير الخاص <code>$~</code> بعد تنفيذ عملية مطابقة عادية. في حال تمرير المعامل الثاني، فسيحدد موضع البدء في السلسلة النصية.<syntaxhighlight lang="ruby">/(.)(.)(.)/.match("abc")[2]  #=> "b"
 
+
/(.)(.)/.match("abc", 1)[2]  #=> "c"‎</syntaxhighlight>
في حال تمرير كتلة، قسيستدعي الكتلة باستخدام <code>[[Ruby/MatchData|MatchData]]</code> إذا نجحت المطابقة، هكذا يمكنك كتابة:
+
في حال تمرير كتلة، فسيستدعي الكتلة باستخدام <code>[[Ruby/MatchData|MatchData]]</code> إذا نجحت المطابقة، وهكذا يمكنك كتابة:<syntaxhighlight lang="ruby">/M(.*)/.match("Matz") do |m|
 
+
  puts m[0]
بدلًا من:
+
  puts m[1]
 
+
end</syntaxhighlight>
قيمة المعادة هي قيمة ناتجة عن تنفيذ الكتلة في هذه الحالة.
+
بدلًا من:<syntaxhighlight lang="ruby">if m = /M(.*)/.match("Matz")
 +
  puts m[0]
 +
  puts m[1]
 +
end</syntaxhighlight>
 +
في هذه الحالة، القيمة المعادة هي القيمة الناتجة عن تنفيذ الكتلة.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">match(str) → matchdata or nil
 
<syntaxhighlight lang="ruby">match(str) → matchdata or nil
سطر 15: سطر 19:
 
==المعاملات==
 
==المعاملات==
 
===<code>str‎</code>===
 
===<code>str‎</code>===
سلسلة نصية.
+
سلسلة نصية يراد مطابقتها مع تعبير نمطي.
 
===<code>pos‎</code>===
 
===<code>pos‎</code>===
 +
موضع البدء.
  
==القيمة المُعادة==
+
==القيمة المعادة==
 +
يعاد كائنٌ من النوع <code>[[Ruby/MatchData|MatchData]]</code> يصف المطابقة، أو تعاد القيمة <code>nil</code> إذا لم يكن هناك تطابق.
  
 
==أمثلة==
 
==أمثلة==
سطر 24: سطر 30:
 
<syntaxhighlight lang="ruby">/(.)(.)(.)/.match("abc")[2]  #=> "b"
 
<syntaxhighlight lang="ruby">/(.)(.)(.)/.match("abc")[2]  #=> "b"
 
/(.)(.)/.match("abc", 1)[2]  #=> "c"‎</syntaxhighlight>
 
/(.)(.)/.match("abc", 1)[2]  #=> "c"‎</syntaxhighlight>
==انظر أيضا==
+
==انظر أيضًا==
* التابع <code>[[Ruby/Regexp/inspect|inspect]]</code>: يعيد  نسخة نصية منسقة من التعبير النمطي . قد يكون من المفاجئ أن تعلم أن <code>#inspect</code> ينتج في الواقع نسخة طبيعية من السلسلة النصية أكثر حتى من التابع <code>#to_s</code>.
+
* التابع <code>[[Ruby/Regexp/match-3F|match?‎]]</code>: يتحقق ما إذا كان التعبير النمطي المعطى قد تطابق (matched) أم لا دون تحديث المتغير ‎<code>$~</code>‎ والمتغيرات الأخرى ذات الصلة.
* التابع <code>[[Ruby/Regexp/match-3F|match?‎]]</code>: يُعيد  القيمة <code>true</code> أو <code>false</code> بحسب ما إذا كان التعبير النمطي قد طوبِق أم لا دون تحديث المتغير $~ والمتغيرات الأخرى ذات الصلة. في حال إعطاء الوسيط الثاني، فإنّه يحدد الموضع في السلسلة النصية لبدء البحث.
 
  
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Regexp.html#method-i-match قسم التابع match‎ في الصنف Regexp‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Regexp.html#method-i-match قسم التابع match‎ في الصنف Regexp‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 05:49، 4 ديسمبر 2018

يُعيد التابع match كائنًا من النوع MatchData يصف المطابقة بين تعبير نمطي وسلسلة نصية، أو يعيد القيمة nil إذا لم يكن هناك تطابق. هذا يُكافئ استرداد قيمة المتغير الخاص ‎$~‎ بعد تنفيذ عملية مطابقة عادية. في حال تمرير المعامل الثاني، فسيحدد موضع البدء في السلسلة النصية.

/(.)(.)(.)/.match("abc")[2]   #=> "b"
/(.)(.)/.match("abc", 1)[2]   #=> "c"‎

في حال تمرير كتلة، فسيستدعي الكتلة باستخدام MatchData إذا نجحت المطابقة، وهكذا يمكنك كتابة:

/M(.*)/.match("Matz") do |m|
  puts m[0]
  puts m[1]
end

بدلًا من:

if m = /M(.*)/.match("Matz")
  puts m[0]
  puts m[1]
end

في هذه الحالة، القيمة المعادة هي القيمة الناتجة عن تنفيذ الكتلة.

البنية العامة

match(str)  matchdata or nil
match(str,pos) matchdata or nil

المعاملات

str‎

سلسلة نصية يراد مطابقتها مع تعبير نمطي.

pos‎

موضع البدء.

القيمة المعادة

يعاد كائنٌ من النوع MatchData يصف المطابقة، أو تعاد القيمة nil إذا لم يكن هناك تطابق.

أمثلة

مثال على استخدام التابع match‎:

/(.)(.)(.)/.match("abc")[2]   #=> "b"
/(.)(.)/.match("abc", 1)[2]   #=> "c"‎

انظر أيضًا

  • التابع match?‎: يتحقق ما إذا كان التعبير النمطي المعطى قد تطابق (matched) أم لا دون تحديث المتغير ‎$~‎ والمتغيرات الأخرى ذات الصلة.

مصادر