الفرق بين المراجعتين لصفحة: «Ruby/Regexp/3D~»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 18: | سطر 18: | ||
==أمثلة== | ==أمثلة== | ||
أمثلة على استخدام التابع <code>=~</code>: | |||
<syntaxhighlight lang="ruby">/at/ =~ "input data" #=> 7 | <syntaxhighlight lang="ruby">/at/ =~ "input data" #=> 7 | ||
/ax/ =~ "input data" #=> nil</syntaxhighlight> | /ax/ =~ "input data" #=> nil | ||
/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ " x = y " | |||
p lhs #=> "x" | |||
p rhs #=> "y" | |||
/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ " x = " | |||
p lhs #=> nil | |||
p rhs #=> nil | |||
re = /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ | |||
re =~ " x = y " | |||
p lhs # undefined local variable | |||
p rhs # undefined local variable | |||
rhs_pat = /(?<rhs>\w+)/ | |||
/(?<lhs>\w+)\s*=\s*#{rhs_pat}/ =~ "x = y" | |||
p lhs # undefined local variable | |||
" x = y " =~ /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ | |||
p lhs, rhs # undefined local variable</syntaxhighlight> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Regexp/case_equality|===]]</code>: معامل تساوي الحالة (Case Equality) | * التابع <code>[[Ruby/Regexp/case_equality|===]]</code>: معامل تساوي الحالة (Case Equality) |
مراجعة 23:29، 31 أكتوبر 2018
يبحث المعامل=~
عن تطابق للتعبير النمطي rxp
(انظر فقرة البنية العامة) ضمن str
.
إذا تم استخدام =~
مع تعبير نمطي حرفي له التقاطات مسماة (named captures)، فسيتم تعيين السلاسل الملتقطة (أو القيمة nil
) في متغيرات محلية تحمل نفس أسماء الالتقاطات.
إذا لم تكن هناك مطابقة، ستُعطى لتلك المتغيرات القيمة nil
.
يُنفّذ التعيين في محلل (parser) روبي. حيث يرصد المحلل التعبير 'regexp-literal =~ expression'
لأجل التعيين. يجب أن يكون التعبير النمطي حرفيًا (literal)، وبدون تلقيم (interpolation)، وأن يوضع على الجانب الأيسر.
لن تُنفّذ عملية التعيين إذا لم يكن التعبير النمطي حرفيًا. كما أنّ تلقيم التعبير النمطي #{}
، سيلغي التعيين. ولن يحدث التعيين أيضًا إن وُضع التعبير النمطي على الجانب الأيمن.
البنية العامة
rxp =~ str → integer or nil
القيمة المُعادة
يُعاد عدد أو القيمة ni
.
أمثلة
أمثلة على استخدام التابع =~
:
/at/ =~ "input data" #=> 7
/ax/ =~ "input data" #=> nil
/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ " x = y "
p lhs #=> "x"
p rhs #=> "y"
/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ " x = "
p lhs #=> nil
p rhs #=> nil
re = /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/
re =~ " x = y "
p lhs # undefined local variable
p rhs # undefined local variable
rhs_pat = /(?<rhs>\w+)/
/(?<lhs>\w+)\s*=\s*#{rhs_pat}/ =~ "x = y"
p lhs # undefined local variable
" x = y " =~ /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/
p lhs, rhs # undefined local variable
انظر أيضا
- التابع
===
: معامل تساوي الحالة (Case Equality)