بناء ملخص للتعبيرات العادية
بناء المباراة
شخصية
x أحرف x
// أحرف Backslash
/0n حرف n مع قيمة ثماني 0 (0 <= n <= 7)
/0nn حرف nn مع القيمة الثمانية 0 (0 <= n <= 7)
/0mnn حرف mnn مع القيمة الثمانية 0 (0 <= m <= 3 ، 0 <= n <= 7)
/XHH حرف HH مع القيمة السداسية 0x
/uhhhh الحرف hhhhh مع القيمة السداسية 0x
/t tab ('/u0009')
/n سطر جديد (كسر الخط) الحرف ('/u000a')
/R Carriage Return حرف ('/u000d')
/F صفحة استراحة ('/u000c')
/رمز إنذار (جرس) ('/u0007')
/e Escape Character ('/u001b')
/CX المقابلة لـ x
فئة الشخصية
[ABC] A ، B أو C (فئة بسيطة)
[^ABC] أي حرف باستثناء A أو B أو C (سلبي)
[A-ZA-Z] A إلى Z أو A إلى Z ، يتم تضمين الحروف في كلا الطرفين (المدى)
[AD [MP]] A إلى D أو M إلى P: [A-DM-P] (الاتحاد)
[AZ && [DEF]] D ، E أو F (تقاطع)
[AZ && [^BC]] A إلى Z ، باستثناء B و C: [AD-Z] (ناقص)
[az && [^mp]] a to z ، وليس m إلى p: [a-lq-z] (ناقص)
فئات الأحرف المحددة مسبقا
. أي حرف (قد يتطابق أو لا يتطابق مع حرف إنهاء الخط)
/D رقم: [0-9]
/D nonbrate: [^0-9]
/S WhiteSpace حرف: [/T/N/X0B/F/R]
/s أحرف غير وايتسباس: [^/s]
/W Word أحرف: [A-ZA-Z_0-9]
/W شخصيات غير كلمة: [^/W]
فئة شخصية Posix (US-ASCII فقط)
/P {Lower} أحرف الأبجدية الصغيرة: [AZ]
/P {Upper} أحرف الحروف الرأسمالية: [AZ]
/P {ASCII} ALL ASCII: [/X00-/X7F]
/p {alpha} أحرف ألفا: [/p {lower}/p {apper}]
/P {Digit} رقم عشري: [0-9]
/p {alnum} أحرف أبجدية رقمية: [/p {alpha}/p {digit}]
/p {pronts} علامات الترقيم:!
/p {graph} الأحرف المرئية: [/p {alnum}/p {pronts}]
/p {print} أحرف قابلة للطباعة: [/p {graph}/x20]
/P {Blank} حرف أو علامة تبويب الحرف: [ /T]
/p {cntrl} أحرف التحكم: [/x00-/x1f/x7f]
/p {xDigit} رقم hexadecimal: [0-9a-fa-f]
/P {Space} حرف Whitespace: [/T/N/X0B/F/R]
فئة Java.Lang.Character (نوع حرف Java بسيط)
/p {javalowercase} يعادل java.lang.character.islowercase ()
/p {javauppercase} يعادل java.lang.character.isuppercase ()
/p {javawhitespace} يعادل java.lang.character.ishitespace ()
/p {javamirrorror} يعادل java.lang.character.ismirrord ()
كتل وفصول Unicode
/P {Ingreek} أحرف في كتلة يونانية (كتلة بسيطة)
/P {Lu} رسائل رأس المال (فئة بسيطة)
/P {SC} رمز العملة
/P {Ingreek} جميع الأحرف ، إلا في الكتلة اليونانية (سلبية)
[/p {l} && [^/p {lu}]] جميع الحروف ، باستثناء الحروف الرأسمالية (ناقص)
مطابقة الحدود
^ بداية الخط
نهاية خط $
/ب حدود الكلمات
/ب الحدود غير الكلمة
/بداية الإدخال
/ز نهاية المباراة السابقة
نهاية إدخال /Z ، فقط لحرف النهاية الأخيرة (إن وجدت)
نهاية المدخلات /z
كلمة كمية الجشع
x؟ x ، مرة أو مرة واحدة ، لا
x* x ، صفر أو عدة مرات
x+ x ، مرة أو أكثر
x {n} x ، بالضبط n times
x {n ،} x ، على الأقل n مرات
x {n ، m} x ، على الأقل n مرات ، ولكن ليس أكثر من m times
كلمة كمية مترددة
x ؟؟ x ، مرة أو مرة واحدة ، لا
x*؟ x ، صفر أو عدة مرات
x+؟ x ، مرة أو أكثر
x {n}؟ س ، بالضبط ن مرات
x {n ،}؟ x ، على الأقل ن مرات
x {n ، m}؟ x ، على الأقل n مرات ، ولكن ليس أكثر من M مرات
كلمات كمية التملك
x؟+ x ، مرة أو مرة واحدة ، لا
x*+ x ، صفر أو عدة مرات
x ++ x ، مرة أو أكثر
x {n}+ x ، بالضبط n مرات
x {n ،}+ x ، على الأقل n مرات
x {n ، m}+ x ، على الأقل n مرات ، ولكن ليس أكثر من m times
عامل منطقي
xy x yeel y
x | yx أو y
(x) x ، كمجموعة التقاط
اقتباس الظهر
/n أي مجموعة متطابقة nth capture
يقتبس
/لا شيء ، ولكن اقتبس من الأحرف التالية
/س لا شيء ، ولكن يقتبس من جميع الأحرف حتى /ه
/ه لا شيء ، ولكن ينهي المرجع بدءا من /Q
بناء خاص (غير معقدة)
(؟: x) x ، كمجموعة غير ملتوية
(؟ idmsux -idmsux) لا شيء ، ولكن سوف يتطابق مع idmsux العلم - OFF
(؟ idmsux -idmsux: x) x ، كـ idmsux - OFF مع العلامة المحددة
مجموعة غير متوترة (؟ = x) x ، من خلال Zero-Width Exival Lookahead
(؟! x) x ، من خلال عرض صفر سالب lookahead
(؟ <= x) x ، من خلال lookbehind
(؟ <! x) x ، lookbehind السلبي من خلال عرض الصفر
(؟> x) x ، كمجموعة مستقلة غير مقصودة
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
عرقات خلفية ، هروب ، والمراجع
يتم استخدام حرف backslash ('/') للرجوع إلى بنيات الهروب ، كما هو محدد في الجدول أعلاه ، وكذلك للإشارة إلى الأحرف الأخرى التي سيتم تفسيرها على أنها بنيات غير محددة. لذلك ، يطابق التعبير // مع عرقلة خلفية واحدة ، و /{يتطابق مع الشريحة اليسرى.
من الخطأ استخدام عمليات الرفع الخلفي قبل أي شخصيات أبجدية لا تمثل بنيات الهروب ؛ وهي محفوظة للامتدادات المستقبلية لغات التعبير العادية. يمكن استخدام الانزلاق الخلفي قبل شخصية غير ألفابتيك ، بغض النظر عما إذا كانت الشخصية ليست جزءًا من البناء النار.
وفقًا لمتطلبات مواصفات لغة Java ، يتم تفسير عمليات الرضا المتراكمة في سلاسل رمز مصدر Java على أنها تهرب من Unicode أو هروب غيرها من الأحرف. لذلك ، يجب استخدام اثنين من الانتشار الخلفي في السلسلة الحرفية للإشارة إلى أن التعبير العادي محمي ولا يتم تفسيره بواسطة مترجم Java Bytecode. على سبيل المثال ، عندما يتم تفسيرها على أنها تعبير منتظم ، فإن السلسلة الحرفية "/B" تتطابق مع حرف مسافة خلفية واحدة ، و "// B" تطابق الكلمة الحدود. السلسلة الحرفية "/(Hello/)" غير قانونية وستتسبب في خطأ في وقت الترجمة ؛ لمطابقة السلسلة (مرحبًا) ، يجب استخدام السلسلة الحرفية "// (Hello //)".
فئة الشخصية
يمكن أن تظهر فئات الأحرف في فئات الأحرف الأخرى ويمكن أن تحتوي على مشغلي نقابات (ضمنيًا) ومشغلي التقاطع (&&). يمثل مشغل الاتحاد فئة تحتوي على جميع الشخصيات على الأقل في إحدى فصول المعامل. يمثل مشغل التقاطع فئة تحتوي على جميع الأحرف في فئتي المعامل في نفس الوقت.
أولوية مشغلي فئة الأحرف هي كما يلي ، مرتبة بالترتيب من أعلى إلى أدنى:
1 هروب حرفي/x
2 التجميع [...]
3 نطاق من الألف إلى الياء
4 Union [ae] [iu]
5 تقاطع [az && [aeiou]]
لاحظ أن مجموعات مختلفة من metacharacters موجودة بالفعل داخل فئة الأحرف ، وليس خارج فئة الأحرف. على سبيل المثال ، تعبيرات منتظمة. يتم فقد المعنى الخاص داخل فئة الأحرف ، والتعبير - يصبح النطاق الذي يشكل metacharacters.
الخط نهاية الخط
حرف إنهاء الخط هو تسلسل من حرف أو حرفين يمثل نهاية خط تسلسل حرف الإدخال. يتم التعرف على الرمز التالي كحرف إنهاء سطر:
حرف جديد (خط جديد) حرف ('/n') ،
حرف إرجاع النقل ("/r/n") متبوعًا بحرف الخط الجديد ،
حرف عودة عربة منفصلة ('/r') ،
حرف السطر التالي ('/u0085') ،
محدد خط ('/u2028') أو
فاصل الفقرة ('/u2029).
إذا تم تنشيط وضع UNIX_LINES ، فإن حرف السطر الجديد هو حرف نهاية الخط المعترف به بشكل فريد.
إذا لم يتم تحديد علامة dotall ، فإن التعبير العادي. يمكن أن تطابق أي حرف (باستثناء نهاية الخط).
بشكل افتراضي ، تجاهل التعبيرات العادية ^ و $ نهايات الخط ولا يتطابقان إلا مع بداية ونهاية تسلسل الإدخال بأكمله ، على التوالي. إذا تم تنشيط الوضع متعدد الأسلحة ، فسيحدث تطابق فقط بعد بداية الإدخال ونهاية السطر (نهاية الإدخال). عندما تكون في الوضع متعدد الأسلحة ، يتطابق $ فقط قبل انتهاء الخط أو في نهاية تسلسل الإدخال.
المجموعة والتقاط
يمكن ترقيم مجموعات الالتقاط عن طريق حساب أقواسها المفتوحة من اليسار إلى اليمين. على سبيل المثال ، في التعبير ((أ) (ب (ج)))) ، هناك أربع مجموعات من هذا القبيل:
1 ((أ) (ب (ج)))
2 /أ
3 (ب (ج))
4 (ج)
مجموعة الأصفار الجماعية تمثل دائمًا التعبير بأكمله.
تتم تسمية مجموعات الالتقاط بهذه الطريقة لأنه في المباراة ، يتم حفظ كل بعد تسلسل الإدخال الذي يتطابق مع تلك المجموعات. يمكن استخدام اللاحق الذي تم التقاطه لاحقًا في التعبير عبر المراجع الخلفية أو يمكن الحصول عليه من المطابقة بعد اكتمال عملية المطابقة.
إن إدخال الالتقاط المرتبط بالمجموعة هو دائمًا اللاحق الذي يطابق المجموعة مؤخرًا. إذا تم حساب المجموعة مرة أخرى بسبب القياس الكمي ، فسيتم الاحتفاظ بقيمة تم التقاطها مسبقًا في فشل الحساب الثاني (إن وجد). على سبيل المثال ، سيقوم مطابقة السلسلة "ABA" بالتعبير (A (B)؟)+ تعيين المجموعة الثانية على "B". في بداية كل مباراة ، يتم التخلص من جميع المدخلات التي تم التقاطها.
المجموعات التي تبدأ بـ (؟) هي مجموعات غير مؤهلة نقية لا تلتقط النص ولا تعتمد على تعداد التحرير والسرد.
ما سبق هو كل محتوى التعبير العادي (الموصى به من قبل مقالة القواعد) التي جلبها لك المحرر. آمل أن يتمكن الجميع من دعم wulin.com أكثر ~