.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995, Graeme W. Wilford .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH regex 3 "22 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم regcomp, regexec, regerror, regfree \- دوال التعبير النمطي POSIX .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint regcomp(regex_t *restrict \fP\fIpreg\fP\fB, const char *restrict \fP\fIregex\fP\fB,\fP \fB int \fP\fIcflags\fP\fB);\fP \fBint regexec(const regex_t *restrict \fP\fIpreg\fP\fB,\fP \fB const char *restrict \fP\fIstring\fP\fB,\fP \fB size_t \fP\fIn\fP\fB, regmatch_t \fP\fIpmatch\fP\fB[_Nullable restrict \fP\fIn\fP\fB],\fP \fB int \fP\fIeflags\fP\fB);\fP .P \fBsize_t regerror(\fPsize_t errbuf_size; \fB int \fP\fIerrcode\fP\fB, const regex_t *_Nullable restrict \fP\fIpreg\fP\fB,\fP \fB char \fP\fIerrbuf\fP\fB[_Nullable restrict \fP\fIerrbuf_size\fP\fB],\fP \fB size_t \fP\fIerrbuf_size\fP\fB);\fP \fBvoid regfree(regex_t *\fP\fIpreg\fP\fB);\fP .P \fBtypedef struct {\fP \fBsize_t re_nsub;\fP \fB} regex_t;\fP .P \fBtypedef struct {\fP \fBregoff_t rm_so;\fP \fBregoff_t rm_eo;\fP \fB} regmatch_t;\fP .P \fBtypedef\fP /* ... */ \fBregoff_t;\fP .fi .SH الوصف .SS التجميع تُستخدم \fBregcomp\fP() لتجميع تعبير نمطي إلى صيغة مناسبة لعمليات بحث \fBregexec\fP() لاحقة. .P عند النجاح، يُهيأ مخبأ النمط عند \fI*preg\fP. \fIregex\fP هي سلسلة محارف منتهية بقيمة خالية. يجب أن يكون الإعداد المحلي نفسه عند تشغيل \fBregexec\fP(). .P بعد نجاح \fBregcomp\fP() ، يحمل \fIpreg\->re_nsub\fP عدد التعبيرات الفرعية في \fIregex\fP. لذا، فإن قيمة \fIpreg\->re_nsub\fP + 1 الممررة كـ \fIn\fP إلى \fBregexec\fP() كافية لالتقاط جميع التطابقات. .P \fIcflags\fP هو OR على مستوى البتات لصفر أو أكثر مما يلي: .TP \fBREG_EXTENDED\fP استخدم صيغة التعبير النمطي الموسع POSIX عند تفسير \fIregex\fP. إذا لم يُضبط، تُستخدم صيغة التعبير النمطي الأساسي POSIX. .TP \fBREG_ICASE\fP لا تفرق بين حالة الأحرف. ستكون عمليات بحث \fBregexec\fP() اللاحقة باستخدام مخبأ النمط هذا غير حساسة لحالة الأحرف. .TP \fBREG_NOSUB\fP أبلغ فقط عن النجاح الكلي. ستستخدم \fBregexec\fP() فقط \fIpmatch\fP لـ \fBREG_STARTEND\fP، متجاهلة \fIn\fP. .TP \fBREG_NEWLINE\fP لا تطابق عوامل تشغيل تطابق أي حرف سطرًا جديدًا. .IP قائمة غير مطابقة (\fB[\[ha]...\&]\fP) لا تحتوي على سطر جديد لا تطابق سطرًا جديدًا. .IP عامل مطابقة بداية السطر (\fB\[ha]\fP) يطابق السلسلة الفارغة فورًا بعد سطر جديد، بغض النظر عن احتواء \fIeflags\fP، أعلام تنفيذ \fBregexec\fP()، على \fBREG_NOTBOL\fP. .IP عامل مطابقة نهاية السطر (\fB$\fP) يطابق السلسلة الفارغة فورًا قبل سطر جديد، بغض النظر عن احتواء \fIeflags\fP على \fBREG_NOTEOL\fP. .SS المطابقة تُستخدم \fBregexec\fP() لمطابقة سلسلة محارف منتهية بقيمة فارغة مع مخبأ النمط المُجمَّع في \fI*preg\fP، الذي يجب أن يكون قد تمت تهيئته باستخدام \fBregcomp\fP(). \fIeflags\fP هو OR على مستوى البت لصفر أو أكثر من الأعلام التالية: .TP \fBREG_NOTBOL\fP عامل مطابقة بداية السطر يفشل دائمًا في المطابقة (لكن انظر علم التجميع \fBREG_NEWLINE\fP أعلاه). يمكن استخدام هذا العلم عندما تُمرَّر أجزاء مختلفة من سلسلة محارف إلى \fBregexec\fP() ولا ينبغي تفسير بداية السلسلة على أنها بداية السطر. .TP \fBREG_NOTEOL\fP عامل مطابقة نهاية السطر يفشل دائمًا في المطابقة (لكن انظر علم التجميع \fBREG_NEWLINE\fP أعلاه). .TP \fBREG_STARTEND\fP يطابق [\fIstring + pmatch[0].rm_so\fP,\fI string + pmatch[0].rm_eo\fP) بدلاً من [\fIstring\fP,\ \fIstrnul(string)\fP). يسمح هذا بمطابقة وحدات البايت NUL المُضمَّنة. إذا تم إرجاع أي مطابقات (لم يُمرَّر \fBREG_NOSUB\fP إلى \fBregcomp\fP()، نجحت المطابقة، و \fIn\fP > 0)، فإنها تستبدل \fIpmatch\fP كالمعتاد، وتبقى إزاحات المطابقة نسبة إلى \fIstring\fP (وليس \fIstring + pmatch[0].rm_so\fP). هذا العلم هو امتداد BSD، غير موجود في POSIX. .SS "إزاحات المطابقة" ما لم يُمرَّر \fBREG_NOSUB\fP إلى \fBregcomp\fP()، يمكن الحصول على مواقع المطابقات داخل \fIstring\fP: تملأ \fBregexec\fP() عناصر \fIn\fP من \fIpmatch\fP بالنتائج: يتوافق \fIpmatch[0]\fP مع المطابقة بأكملها، و \fIpmatch[1]\fP مع أول تعبير فرعي، وهكذا. إذا كان هناك مطابقات أكثر من \fIn\fP، يتم التخلص منها؛ إذا كان أقل، تُملأ العناصر غير المستخدمة من \fIpmatch\fP بقيم \fB\-1\fP. .P كل مطابقة صالحة مُعادة (غير \fB\-1\fP) تتوافق مع النطاق [\fIstring + rm_so\fP,\fI string + rm_eo\fP). .P \fIregoff_t\fP هو نوع عدد صحيح مُوقَّع قادر على تخزين أكبر قيمة يمكن تخزينها إما في نوع \fIptrdiff_t\fP أو نوع \fIssize_t\fP. .SS "الإبلاغ عن الأخطاء" تُستخدم \fBregerror\fP() لتحويل رموز الخطأ التي يمكن إرجاعها بواسطة كل من \fBregcomp\fP() و \fBregexec\fP() إلى سلاسل محارف لرسائل الخطأ. .P إذا لم يكن \fIpreg\fP مؤشرًا فارغًا، يجب أن يكون \fIerrcode\fP أحدث خطأ تم إرجاعه من عملية على \fIpreg\fP. .P إذا لم يكن \fIerrbuf_size\fP 0، يتم نسخ ما يصل إلى \fIerrbuf_size\fP بايت إلى \fIerrbuf\fP؛ سلسلة محارف الخطأ تكون دائمًا منتهية بقيمة فارغة، ومُقتطعة لتناسب. .SS التحرير \fBregfree\fP() تُنهي تهيئة مخزن النمط عند \fI*preg\fP، مُحررةً أي ذاكرة مرتبطة؛ يجب أن يكون \fI*preg\fP قد هُيئ عبر \fBregcomp\fP(). .SH "قيمة الإرجاع" \fBregcomp\fP() تُرجع صفرًا عند التجميع الناجح أو رمز خطأ عند الفشل. .P \fBregexec\fP() تُرجع صفرًا عند المطابقة الناجحة أو \fBREG_NOMATCH\fP عند الفشل. .P \fBregerror\fP() تُرجع حجم المخزن المطلوب لاحتواء سلسلة المحارف. .SH الأخطاء يمكن إرجاع الأخطاء التالية بواسطة \fBregcomp\fP(): .TP \fBREG_BADBR\fP استخدام غير صحيح لعامل المرجع الخلفي. .TP \fBREG_BADPAT\fP استخدام غير صحيح لعوامل النمط مثل المجموعة أو القائمة. .TP \fBREG_BADRPT\fP استخدام غير صحيح لعوامل التكرار مثل استخدام \[aq]*\[aq] كأول محرف. .TP \fBREG_EBRACE\fP عوامل نطاق الأقواس غير المتطابقة. .TP \fBREG_EBRACK\fP عوامل قائمة الأقواس غير المتطابقة. .TP \fBREG_ECOLLATE\fP عنصر ترتيب غير صحيح. .TP \fBREG_ECTYPE\fP اسم فئة محارف غير معروف. .TP \fBREG_EEND\fP خطأ غير محدد. هذا غير مُعرَّف بواسطة POSIX. .TP \fBREG_EESCAPE\fP شرطة مائلة عكسية زائدة. .TP \fBREG_EPAREN\fP عوامل مجموعة الأقواس غير المتطابقة. .TP \fBREG_ERANGE\fP استخدام غير صحيح لعامل النطاق؛ على سبيل المثال، تحدث نقطة نهاية النطاق قبل نقطة البداية. .TP \fBREG_ESIZE\fP يتطلب التعبير النمطي المُجمَّع مخزن نمط أكبر من 64\ كيلوبايت. هذا غير مُعرَّف بواسطة POSIX. .TP \fBREG_ESPACE\fP نفدت الذاكرة من روتينات regex. .TP \fBREG_ESUBREG\fP مرجع خلفي غير صحيح لتعبير فرعي. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBregcomp\fP(), \fBregexec\fP() T} سلامة الخيوط المنطقة (locale) آمنة لتعدد المسالك (MT\-Safe) T{ .na .nh \fBregerror\fP() T} سلامة الخيوط بيئة آمنة لتعدد الخيوط (MT\-Safe) T{ .na .nh \fBregfree\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير POSIX.1\-2008. .SH التاريخ POSIX.1\-2001. .P قبل POSIX.1\-2008، كان مطلوبًا من \fIregoff_t\fP أن يكون قادرًا على تخزين أكبر قيمة يمكن تخزينها في نوع \fIoff_t\fP أو نوع \fIssize_t\fP. .SH تحذيرات .\" glibc, musl, 4.4BSD, illumos \fIre_nsub\fP مطلوب فقط أن يُهيَّأ إذا لم يُحدد \fBREG_NOSUB\fP، لكن جميع التطبيقات المعروفة تُهيِّئه بغض النظر. .P .\" illumos has two more start/end pairs and the first one is of pointers قد يحتوي كل من \fIregex_t\fP و \fIregmatch_t\fP على أعضاء إضافيين (ويفعلون ذلك)، بأي ترتيب. ارجع إليهم دائمًا بالاسم. .SH أمثلة .EX #include #include #include #include #include \& static const char *const str = "1) John Driverhacker;\[rs]n2) John Doe;\[rs]n3) John Foo;\[rs]n"; static const char *const re = "John.*o"; \& int main(void) { static const char *s = str; regex_t regex; regmatch_t pmatch[1]; regoff_t off, len; \& if (regcomp(®ex, re, REG_NEWLINE)) exit(EXIT_FAILURE); \& printf("String = \[rs]"%s\[rs]"\[rs]n", str); printf("Matches:\[rs]n"); \& for (unsigned int i = 0; ; i++) { if (regexec(®ex, s, countof(pmatch), pmatch, 0)) break; \& off = pmatch[0].rm_so + (s \- str); len = pmatch[0].rm_eo \- pmatch[0].rm_so; printf("#%u:\[rs]n", i); printf("offset = %jd; length = %jd\[rs]n", (intmax_t) off, (intmax_t) len); printf("substring = \[rs]"%.*s\[rs]"\[rs]n", len, s + pmatch[0].rm_so); \& s += pmatch[0].rm_eo; } \& exit(EXIT_SUCCESS); } .EE .SH "انظر أيضًا" \fBgrep\fP(1), \fBregex\fP(7) .P قسم دليل glibc، \fIالتعبيرات النمطية\fP .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .