מפרט RE2 למפות של כתובות URL

בדף הזה מפורטות הדרישות והמגבלות שקשורות לשימוש בתחביר של RE2 עבור ביטויים רגולריים במפות כתובות ה-URL.

ל-RE2 יש את המגבלות המובנות הבאות:

  • ‫RE2 לא תומך בטענות שרירותיות של מבט קדימה או מבט אחורה, וגם לא בהפניות חוזרות. באופן ספציפי, אין תמיכה באופרטורים הבאים של הפניה חוזרת:
    • (?=) - positive lookahead
    • (?!) – negative lookahead
    • (?<=) - positive lookbehind
    • (?<!) - negative lookbehind
    • \N – הפניה חוזרת, כאשר N הוא מספר שלם
  • הביטוי הרגולרי RE2 לא מזהה את \cx כתווים של Control-X.
  • ‫RE2 לא מזהה את אופרטורי הקיבוץ האטומי (?>...) ו-++
  • ‫RE2 לא מזהה את \C, ‏ \G או \X.
  • ‫RE2 לא מזהה תת-תבניות מותנות (?(...)...), הערות (?#...), הפניות לתבניות (?R) (?1) (?P>foo) או קריאות ל-C (?C...).

בנוסף להגבלות של RE2 שמתוארות למעלה, אנחנו מטילים הגבלות נוספות על תחביר של ביטויים רגולריים באמצעות רשימת ההיתרים הבאה:

מחרוזת ריקה ואנלוגים של מחרוזות ריקות

אופרטור תיאור
^ בתחילת הטקסט או השורה (m=true)
$ בסוף הטקסט (כמו ‎\z ולא ‎\Z) או השורה (m=true)
\A בתחילת הטקסט
\b בגבול מילה ב-ASCII ‏ (\w בצד אחד ו-\W, ‏\A או ‏\z בצד השני)
\B לא בגבול מילה של ASCII
\g בתחילת הכתוביות שמתבצע בהן החיפוש
\G בסוף המשחק האחרון
\z בסוף הטקסט

חזרות

אופרטור תיאור
x* אפס או יותר מופעים של x, עדיף יותר
x+ אחד או יותר x, עדיף יותר
x? אפס או אחד x, עדיף אחד
x{n,m} ‫N או n+1 או … או m x, עדיף יותר
x{n,} ‫N או יותר x, עדיף יותר
x{n} בדיוק n x
x*? אפס או יותר מופעים של x, עדיפות לפחות מופעים
x+? אחת או יותר אפשרויות x, עדיפות לפחות
x?? אפס או x אחד, עדיפות לאפס
x{n,m}? N או n+1 או ... או m x, עדיפות לפחות
x{n,}? ‫N או יותר x, עדיפות לפחות
x{n}? בדיוק n x

התאמה משנית

אופרטור תיאור
(re) קבוצה ממוספרת לחילוץ (תת-התאמה)
(?P<name>re) קבוצה לחילוץ עם שם ומספר (התאמה משנית)
(?<name>re) קבוצה לחילוץ עם שם ומספר (התאמה משנית)
(?:re) קבוצה שלא מיועדת לחילוץ
(?flags) הגדרת דגלים בתוך הקבוצה הנוכחית; לא מתבצעת לכידה
(?flags:re) הגדרת דגלים במהלך re; non-capturing

טווחים

אופרטור תיאור
[] טווחים
\d ספרות (≡ [0-9])
\D לא ספרות (≡ [^0-9])
\s רווח לבן (≡ [\t\n\f\r ])
\S לא רווח לבן (≡ [^\t\n\f\r ])
\w תווים במילה (≡ [0-9A-Za-z_])
\W לא תו במילה (≡ [^0-9A-Za-z_])
[[:alnum:]] אלפאנומרי (≡ [0-9A-Za-z])
[[:alpha:]] אלפביתי (≡ [A-Za-z])
[[:ascii:]] ‫ASCII (≡ [\x00-\x7F])
[[:blank:]] ריק (≡ [\t ])
[[:cntrl:]] תווי בקרה (≡ [\x00-\x1F\x7F])
[[:digit:]] ספרות (≡ [0-9])
[[:lower:]] אותיות קטנות (≡ [a-z])
[[:space:]] רווח לבן (≡ [\t\n\v\f\r ])
[[:upper:]] אותיות רישיות (≡ [A-Z])
[[:word:]] תווים במילה (≡ [0-9A-Za-z_])
[[:xdigit:]] ספרה הקסדצימלית (≡ [0-9A-Fa-f])

התווים שמותרים בטווחים

טווח התווים תיאור
0-9, A-Z, a-z אלפאנומרי
\x00-\x7F ASCII
0-9A-Fa-f ספרות הקסדצימליות
\t\n\v\f\r רווח לבן
^ שלילת טווח
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ תווים אחרים