From 823ba4869cf7889d420d277db4bacc7f6e6defa9 Mon Sep 17 00:00:00 2001 From: Recurduck Greco Date: Sat, 16 Oct 2021 02:50:27 +0300 Subject: [PATCH 1/3] Add hebrew translation --- img/regexp-he.png | Bin 0 -> 14036 bytes translations/README-he.md | 577 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 577 insertions(+) create mode 100644 img/regexp-he.png create mode 100644 translations/README-he.md diff --git a/img/regexp-he.png b/img/regexp-he.png new file mode 100644 index 0000000000000000000000000000000000000000..c09457ed8ebd7ce9790b239e38a00adef191f88b GIT binary patch literal 14036 zcmch8cT`jTwrvmvKShua=>jUBSZHeK)dr|^K{|vY0YaA&1VXR?0s<;Z2~9viN(e0= zB}7GvKnM^*6+%&32$2$c!rPoP-gx(nci(vT+;iUhgTY9~&fdSa=A3J-xnoU?^iCWT zIR*lOPTak7`#uQ74hDhPx{q=I-%S19Fa!Rv1>D!W2`cY7y#RbT>~_QO1_)G{bbQb0 z2=Mt2zdP0eAQ1Q0gFiO@i}xZyASI8xw{Mt-IMBwAhn#n_*Z!^iKJrXp>6tTid3U4k z7o0gNwdyN<*~{YL)D!;jZ%3Zo<{kIDBq-bOd@1Gr9TPdxZ?%t1FQ=k48hLLIpA)UW z_oU%EUyY8A+)dlVrq|bUC=YwSXC?={33xPyP|hK)b(7KqX1mkV!6VI-$MWC`lRLn; z((A1m5D+M`>?kmw>nYELL7+4GU%5b_SLdC8xplm`!VUsGyqm@b0#*Ih4gA3RPbhG? z%pd>t%N^MXFL^#ZdEzXRes7KJ2?BX>|HG|EuCJL%#v8tDFqD+^co<$dxaY2Am=I`% zNo#Y1(cc-S%%-BQkPBbGUQu{ZW~*$r)P83y^p|-_E`wlMZUQqpM@lKF5MO>L0c|| z1r%`a+Rx9yZPy~$K$+K{r=u0rGoVF!@i&)47Vif;^kIk0!HU(@BoF7nkJu{_HCx%R zTAghspGV-w4W>H0s1g<&?CfhgFMcndkAx)>3m5uu*r!`qj}ae*L{ClT?a>}XV*4oB zOHIv^;8Q4$Bt4?U*su>?WA6EsF8Jd?phr^OUhlsk^!mSky{R^Ehf~Ku#ayP{^Z4tWxkn94O)4LbO z@Y+iTa|#goW1n?ALPJ)2r{_>(Ifi_KmSYk>QWF*Gti9{fqs#AbS{i`G5_2mPQV{w~ z3D1^Z4+5jSKA6x~QcR%)&apy^T{9pK zfL;dtr?GZW1&aD*vb@Hv_-FGy^qm#vt{QTGvRqTvX|ba@t93LgyB6ZLnOV?VT|4?} zd3SJtTFIS_GQvPJ#?o`{2^z@v2wVtR89uf~Sj?FU95qoKOXZIsp}v@jhSdmYW@fmC zj>&@}fBXTqgFVXo?49qg&=&iKLlUULM?Mymzu#uvVmMn9r8LcA-EU_R7Q6b+N1jM3_+BsR0Rh)^ z7d^8y=k?jD$(zSpL;G9#66hnz!Dv+lHc+oonyR>$pLS9NLCkxwt1Lfydh6;y*&89b zLk8repB*flSC_ga3@!M<5t zc|YWoTYXuEZqRt4z5n-bzv}41vks!tIr#w}j$UJmnQG$~?xPJ>5E(x#r7}EEfE=Hl zkh$H0005=?WBR`UF@Hy-hqRK?@_R|41Nr?UZaMZnz^Wm*WKNYl?&x7I!|{O(vSsR; zdhpU6gN1WM^k5|2UTl27TVhO$Xrb-v@mEb5w85jEZLk?2$|c`7{W0 zLCq<;3>%Y9EpIGGv4bXWU--{pH59C!T-c`9|M~NE)dZqBW~kd(7KaZPxofsYj%yzX zN2QAxOG=`5m9A;MgC@o^+230Ns9l-{;ktS&-@`eyHdNNKwelrbL0{~G!q}sW)gHm2 z=MuORinxVOM9#du!tVEyaO#HBhXM|lg3+fJUs}?W4EXi4Ahz|jP)3{<24Gy){>N4k%to~;BcO+EJ{EYo0innflWv$rRadI4byTX= zL`8Fi4sY}@T~ChSeccvOI<=i1Mf|1@`#{H`x;vtA#3iP4XoEiX4pl#c@>KroR5#I}0LPc0qM8y+FM|%b_(9bAgJlR5=Z&~P z6BOIeeeop1zJ}k%4`u!hy!_DsAilQa!-imXPnEp8lp}(^ zhI|#CN{`yvYOgwRM4lkIPYjMW!7eEpLMm7lS3a35lJ2)$t!ok~im#RO#Q)Z zeFCW*P`#3=XL9YbVav{y8ik{u@1M})`d~uf&PhpG^bfuAsrsmLOv;A;PUKWN+qJXZ zpoaw(rG5_~m2cA{p6OnArvD5i!`QT5gn*meh6Hj_yODg6F9BI_p)6>?qU^hYh=lOn z8Cgx{9I1Qjh)09Xy`r23wkYQ48IY^&z3_H-hFFUSv7EozDdKX1`R=EhRPSAt+OPl) zHX#i~*#vvX!=T87Gu@!m@}s&SQ6Zsw1m0)6HCv$XqjN)i=gxr?Hau#qe;SkW$)1e4 z!tNdc49|mI36hCOmXCS5L18_U8vBQS{wrBpTcC(6-o@V|WObEayxaQ4byM0*e|-7QW?&ecQPW zCTdjM92#~vRW~Px=oltzT?4hhMg3<&OLNUYIC2IEkAF^b-5Tssqn5#Z`lec9N>u@l z4*W*}_xURL%9Y-0Y}d8_U&y<^qujqL9;3^$9(7(K|H%6fu=q+5(20(_|Fq!z_l)Sj zp?>>6-^@kD$eiHfG7pHi>wm?A#DmIW{^M2?x;q?-pqEo25sw>|8>pSXs(aL=vmVc; z|I+Xa@9XA@WSoR{d^J=ae_P(XvlzJbdukSW>u`#gdhpw|6Dtmf(;BSk;+voJu!m2} zt3{ae6^gPJwT=%PlWMi%R^B>k1 zV~xX|8`k^vOV2x&qUWHuO{$MwSLOhn5p9Ii%V&402Z?N=k~?KsWzG|{8&Wl#>1IZ% zI+!r4J6GA?dW;J&KcU!B1*kIhn(D+ zgdPTo8m669_m5FNM1bX;d8h(aXmosX-m~aAFW8t+2x%!Pw^_wcFY=48&5qE`$?D=*#fg*vr4#fYp@*8 z+Nqi(g(yXxVc+%xABtr3cfTyt0ly7l89cjr@~5P(a_MFc??cdhDoWVssHMYW*KLZB z>>nNNzfvI+OY=xTcpSe5TGvTqn@oEI{2u%FBfS9rCj_*LnJ%z&P|+FQ@Gt#A$X=OSCR5R>c@ zcj(Cd-7aQXMpl*~ylFRFfS~TN@mMGTcR903d&V9Jbe`G02U#|XxO;`YbR9Do&=80|QUp*MQ zZOHBz#Q||nLgzX)L?fa2D42}Gh0(((WB#^(|D?|?t}*OCZbTAW_KS%+_uD+@hlYH} zm*WCHzH)8fTDb%Xw;Y6lp|P>}g5jPC zTv(|kXkIr*xN1XUe?`L8`};m{D$Ox6v5gtNkGpJ33Rs$3UwGu`Fy%s;jr1C7s7cDu z*w|7(t93h8eI2=`j5Nblspi#_=I7marUmg z>qAK9&;l6~5j4_WHih5c#go7}+ubma-JK%jP7%QDq#V}z`g=~zi{pzHbtMi9 za;$6?Wq%jBP;88Vh4#feye%v&?ED-AY+$pEi|MKPAh}v674%@4d`~MW zd!r_>P1p@s;+-FJT9yQ~oKIUOeB!aI_J^FU*c|r>jSyh7ZCMt5fpX?29jtLA`^EQc+1hVkN$`Ac0S; z@?a&aY;2k&S@eAty$d!YzEKfVaIgpD`EfN#`14{^c z7zB`m)g=Yku#qkY3nf{v7nIq238p)?W~CXJTdL%|;y2&@7VW(ja(|wRWog1+!N4u$ z?GX&}ukgJ_6MXZKBn%Vx8zNh%Ng7+Szl{b9Sgr86tof( zF&|TM9yHMXD(e7rWa0D1+RXK+JV!HJ%6jGi|aw70*@Qoq^H5=>5U z+cwYL;0ZNh7?l=jGZ$p3{A}pZ3)-TlV6*3qDc+~G!as$&AsklUq}F(C@+O7cX7mgK zK;7KC%DgJpg-SoyU9+TbhbfJvRBNT_aQU57bW30ZWv_p@AREr4LLe%Ses+9a%ie5? zN;XovOW?XLihy?9Tc3K-n3dr6P-Bvf=Z?;l*9cgCdO1h~Be~qE{7tNvu=rj)D`zIr zLq2bfARjo!-2xK>agi;E#Ht9(N3hqD5jcl3JGCo zIchV^v>&j>Oa!qFSN9&To5hPz0D)*u2b}~I&!1SEP zhQ7NRYU@6=65FpOF6Hp7#2~j~epRbYkI3|`7ccYWY<-JX^j-K1m3zBmUTGXS<|Ttm z%Q^eoIlu&HV)$FTx4`*+0$Frro3M~#WqgSzQWM1^Zk+GvjTKtK$e}bhBqO>)1Pl#~ zL;I8a56HQYWTcJ`4}sm%FgveSG&c*#0XN|@&OaL=yI6>H#*;Su1^iAaest6QA&npw zCOnQtoN7B@Sm|h@kYE190C(g~Yi;(j()1AubDSc3>PQ~HdPWjfv-JF+w!q&GvLR-1 z_fe_sILx}8322uR*Q~Vi#^r`6PYf=2%0DU0Zlr8h8nWGallRY5^yV*lWc_GoTWp~c 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 MF}huT)A8y50MQ@}e*gdg literal 0 HcmV?d00001 diff --git a/translations/README-he.md b/translations/README-he.md new file mode 100644 index 0000000..f8ec853 --- /dev/null +++ b/translations/README-he.md @@ -0,0 +1,577 @@ +

+
+
+ Learn Regex + +

+ +
+ +## תרגומים: + +* [English](README.md) +* [German](translations/README-de.md) +* [Español](translations/README-es.md) +* [Français](translations/README-fr.md) +* [Português do Brasil](translations/README-pt_BR.md) +* [中文版](translations/README-cn.md) +* [日本語](translations/README-ja.md) +* [한국어](translations/README-ko.md) +* [Turkish](translations/README-tr.md) +* [Greek](translations/README-gr.md) +* [Magyar](translations/README-hu.md) +* [Polish](translations/README-pl.md) +* [Русский](translations/README-ru.md) +* [Tiếng Việt](translations/README-vn.md) +* [فارسی](translations/README-fa.md) +* [עברית](translations/README-he.md) + +## מה זה ביטוי רגולרי? + +

+ + הורד PDF + +

+ +> ביטוי רגולרי (regular expression) הוא קבוצת תוים או סימנים אשר משמשים למציאת תבנית ספציפית בתוך טקסט. + +ביטוי רגולרי הוא תבנית המתאימה את עצמה לנושא במחרוזת משמאל לימין. +ביטויים רגולרים משמשים להחלפת טקסט בתוך מחרוזת, אימות טפסים, +חילוץ מחרוזת משנית ממחרוזת ראשית על בסיס התבנית המתאימה, ועוד. +המונח "Regular expression" (ביטוי רגולרי) הוא יחסית ארוך ולכן בדרך כלל +נמצא את המונח מקוצר ל-"regex" או "regexp". + +תדמיין.י שאת.ה כותב.ת אפליקציה ואת.ה רוצה להציב חוקים למצב בו המשתמש בוחר את +שם המשתמש. אנחנו רוצים לאפשר לשם המשתמש להכיל אותיות, מספרים, קוים תחתונים ומקפים. +בנוסף נרצה גם להגביל את מספר התוים בשם המשתמש בכדי שלא יראה מכוער. +נוכל להשתמש בביטוי הרגולרי הבא בכדי לאמת את שם המשתמש: + +

+ +

+ Regular expression +

+ +הביטוי הרגולרי למעלה יכול לאשר את המחרוזות `john_doe`, `jo-hn_doe` +ו-`john12_as`. אך הוא לא יתאים למחרוזת `Jo` בגלל שמחרוזת זו מכילה אות גדולה + ובנוסף לכך היא קצרה מדי (פחות משלושה תוים). + +## תוכן עניינים + +- [התאמות בסיסיות](#1-התאמות-בסיסיות) +- [תווי-מטא](#2-תווי-מטא) + - [עצירה מלאה](#21-עצירה-מלאה) + - [מערכות תוים](#22-מערכות-תוים) + - [מערכות תוים שליליות](#221-מערכות-תוים-שליליות) + - [חזרות](#23-חזרות) + - [הכוכבית](#231-הכוכבית) + - [הפלוס](#232-הפלוס) + - [סימן השאלה](#233-סימן-השאלה) + - [סוגרים מסולסלים](#24-סוגרים-מסולסלים) + - [קבוצות לכידה](#25-קבוצות-לכידה) + - [קבוצות שאינן לוכדות](#251-קבוצות-שאינן-לוכדות) + - [חלופה](#26-חלופה) + - [התעלמות מתווים מיוחדים](#27-התעלמות-מתווים-מיוחדים) + - [עוגנים](#28-עוגנים) + - [ה-"קרט"](#281-ה-"קרט") + - [סימן הדולר](#282-סימן-הדולר) +- [קיצורי מערכות תווים](#3-קיצורי-מערכות-תווים) +- [הסתכלויות](#4-הסתכלויות) + - [מבט קדימה חיובי](#41-מבט-קדימה-חיובי) + - [מבט קדימה שלילי](#42-מבט-קדימה-שלילי) + - [מבט אחורה חיובי](#43-מבט-אחורה-חיובי) + - [מבט אחורה שלילי](#44-מבט-אחורה-שלילי) +- [דגלים](#5-דגלים) + - [חוסר רגישות לאותיות](#51-חוסר-רגישות-לאותיות) + - [חיפוש גלובלי](#52-חיפוש-גלובלי) + - [רב-שורות](#53-רב-שורות) +- [התאמה חמדנית מול עצלה](#6-התאמה-חמדנית-מול-עצלה) + +## 1. התאמות בסיסיות + +ביטוי רגולרי הוא בסף הכל תבנית של תוים שאנו משתמשים בהם בכדי לבצע חיפוש +בתוך הטקסט. לדוגמא, הביטוי הרגולרי `the` פירושו: האות `t`, ואחריה האות `h`, ואחריה האות `e`. + +
+"the" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/dmRygT/1) + +הביטוי הרגולרי `123` מתאים למחרוזת `123`. הביטוי הרגולרי מותאם למחרוזת קלט על ידי השוואת כל תו +בביטוי הרגולרי לכל תו במחרוזת הקלט, אחד אחרי השני. ביטויים רגולרים לרוב יהיו +תלויי אותיות קטנות או גדולות כך שהביטוי הרגולרי `The` לא יתאים למחרוזת `the`. + +
+"The" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/1paXsy/1) + +## 2. תווי-מטא + +תווי-מטא אלו הם אבני הבניין של ביטויים רגולרים. תווי-מטא לא מסמלים את עצמם, אלא מתפרשים באופן מיוחד. +לכמה תווי-מטא יש משמעויות מיוחדות והם נכתבים בתוך סוגריים מרובעים. +תווי-המטא הם כדלקמן: + +|תווי-מטא|תיאור| +|:----:|----| +|.|נקודה תואמת כל תו בודד למעט שבירת שורות.| +|[ ]|מחלקת תווים. תואם כל תו הכלול בין הסוגריים המרובעים.| +|[^ ]|מחלקת תווים שלילית. תואם כל תו שאינו כלול בין הסוגריים המרובעים| +|*|תואם 0 או יותר חזרות של הסמל הקודם.| +|+|תואם חזרה אחת או יותר של הסמל הקודם.| +|?|הופך את הסמל הקודם לאופציונלי.| +|{n,m}|סוגריים מסולסלים. תואם לפחות חזרות "n" אך לא יותר מ- "m" של הסמל הקודם.| +|(xyz)|קבוצת תווים. תואם את התווים xyz בסדר המדויק הזה.| +|||חלופה (או). התאמה בין התווים שלפני או לתווים שאחרי הסמל.| +|\|מתעלם מהתו הבא. זה מאפשר לך להתאים תווים שמורים [ ] ( ) { } . * + ? ^ $ \ || +|^|תואם את תחילת הקלט.| +|$|תואם את סוף הקלט.| + +## 2.1 עצירה מלאה + +עצירה מלאה `.` היר דוגמא פשוטה לשימוש בתו-מטא. תו-המטא `.` מתאים לכל תו בודד. הוא לא יתאים +לתו return (\r) או לתו newline (\n). למשל, הביטוי הרגולרי `.ar` פירושו: כל תו, שאחריו האות `a`, ואחריה האות `r`. + +
+".ar" => The car parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/xc9GkU/1) + +## 2.2 מערכות תוים + +מערכות תוים נקראים גם מחלקות תוים. סוגריים מרובעים משמשים לציון מערכות תוים. +השתמש במקף בתוך ערכת התוים בכדי לציין את טווח התוים. סדר טווח התוים לא משנה. +לדוגמא, הביטוי הרגולרי `[Tt]he` פירושו: אות גדולה +`T` או אות קטנה `t`, שאחריה מופיעה האות `h`, ואחריה מופיעה האות `e`. + +
+"[Tt]he" => The car parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/2ITLQ4/1) + +נקודה בתוך ערכת התוים בשונה מבחוץ תחשב כתו נקודה. הביטוי הרגולרי +`ar[.]` פירושו: תו האות הקטנה `a`, שאחריו האות `r`, +ואחריה התו נקודה `.`. + +
+"ar[.]" => A garage is a good place to park a car.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/wL3xtE/1) + +### 2.2.1 מערכות תוים שליליות + +באופן כללי, הסימן "קרט"(גג) מייצג את תחילתה של מחרוזת, אך במידה והוא מוקלד לאחר סוגר מרובע פותח, +הוא שולל את מערכת ההתוים שיהיו תחת אותם סוגרים. לדוגמא, הביטוי הרגולרי `[^c]ar` פירושו: כל תו חוץ מ-`c`, +שלאחריו יופיע התו `a`, שאחריו יופיע התו `r`. + +
+"[^c]ar" => The car parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/nNNlq3/1) + +## 2.3 חזרות + +תווי-המטא `+`, `*` או `?` משמשים לציון כמה פעמים דפוסי משני יכולים להתרחש. +תווי-מטא אלו פועלים אחרת במצבים שונים. + +### 2.3.1 הכוכבית + +הסימן - `*` תואם אפס או יותר חזרות של המתאם הקודם. הביטוי הרגולרי `a*` פירושו: +אפס או יותר חזרות של התו הקודם- `a`. אבל אם הכוכבית תופיע לאחר מערכת או מערך תוים אז +הוא ימצא את החזרות של מערכת התוים כולה. לדוגמא, הביטוי הרגולרי `[a-z]*` פירושו: +כל מספר של אותיות קטנות בשורה. + +
+"[a-z]*" => The car parked in the garage #21.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/7m8me5/1) + +הסימן - `*` יכול לשמש יחד עם התו-מטא `.` בכדי להתאים כל מחרוזת תוים `.*`. +הסימון - `*` יכול לשמש יחד עם התו רווח - `\s` בכדי להתאים מחרוזת של תוי רווח. +לדוגמא, הביטוי `\s*cat\s*` פירושו: אפס או יותר רווחים, שאחריהם תופיעה האות הקטנה `c`, +שאחריה תופיע האות הקטנה `a`, ואחריה האות הקטנה `t`, ולבסוף אחריה יופיעו אפס או יותר תווי רווח. + +
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/gGrwuz/1) + +### 2.3.2 הפלוס + +הסימן `+` מתאים לאחת או יותר חזרות של התו הקודם לו. לדוגמא, הביטוי הרגולרי + `c.+t` פירושו: האות הקטנה - `c`, לאחריה לפחות תו אחד או יותר, + ואחריה האות הקטנה `t`. חשוב לציין שה - `t` יהיה התו `t` האחרון במשפט. + +
+"c.+t" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Dzf9Aa/1) + +### 2.3.3 סימן השאלה + +בביטוי רגולרי, התו-מטא `?` הופך את התו הקודם לאופציונלי, +סמל זה יתאים לאפס או יותר הופעות של אותו תו קודם. לדוגמא, הביטוי הרגולרי +`[T]?he` פירושו: אופציה לאות +`T` גדולה, ולאחריה אות קטנה `h`, ולאחריה תופיע האות - `e`. + +
+"[T]he" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/cIg9zm/1) + +
+"[T]?he" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/kPpO2x/1) + +## 2.4 סוגרים מסולסלים + +בביטויים רגולרים, סוגרים מסולסלים (נקראים גם מכמתים) משמשים לציון +מספר הפעמים שניתן לחזור על תו או קבוצת תוים מסויימת. לדוגמא, הביטור הרגולרי + `[0-9]{2,3}` פירושו: התאם לפחות שתי ספרות, אבל לא יותר משלוש, בטווח שבין 0 ל-9 + +
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/juM86s/1) + +אנחנו יכולים לוותר על המספר השני בסוגרים המסולסלים. לדוגמא, בביטוי הרגולרי +`[0-9]{2,}` פירושו: התאמת שתי ספרות או יותר. בנוסף אם +נוריד את הפסיק, לדוגמא בביטוי הרגולרי `[0-9]{3}` פירושו: +התאם בדיוק שלוש ספרות. + +
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Gdy4w5/1) + +
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Sivu30/1) + +## 2.5 קבוצות לכידה + +קבוצה מלכדת היא קבוצה של תת-תבניות שנכתבות בתוך סוגריים רגילים `(...)` . +כפי שצויין קודם לכן, בביטוי רגולרי, אם נניח מכמת אחרי תו הוא יחזור על התו הקודם. +אבל אם נניח מכמת אחרי קבוצה מלכדת אז המכמת יתיחס לכל הקבוצה המלכדת. לדוגמא, הביטוי הרגולרי +`(ab)*` תואם אפס או יותר חזרות של המחרוזת "ab". אנחנו יכולים גם להשתמש +בתו-מטא `|` המשמש לבצע את הפעולה 'OR'(או) בתוך קבוצה מלכדת. +לדוגמא, הביטוי הרגולרי `(c|g|p)ar` פירושו: אות קטנה `c`, +`g` או `p`, שאחריהן תופיע האות `a`, ואחריה האות `r`. + +
+"(c|g|p)ar" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/tUxrBG/1) + +יש לשים לב כי קבוצות מלכדות לא רק תואמות, אלא גם תופסות את התוים לשימוש בשפת האם. +שפת האם יכולה להיות Python או JavaScript או כמעט כל שפה שמיישמת ביטויים רגולרים +בבגדרת פונקציה. + +### 2.5.1 קבוצות שאינן לוכדות + +קבוצה שאינה מלכדת זוהי קבוצת לוכדת התואמת את התוים אבל לא תופסת את הקבוצה. +קבוצה שאינה מלכדת מסומנת על ידי התו `?` ואחריו `:` בתוך הסוגריים הרגילים. `(...)`. +לדוגמא, בביטוי הרגולרי `(?:c|g|p)ar` שדומה ל-`(c|g|p)ar` +בכך שהוא תואם לאותם תווים אך לא ייצר קבוצת לכידה. + +
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Rm7Me8/1) + +קבוצות שאינן מלכדות יכולות להיות שימושיות כאשר יש צורך בפונקציונליות של חיפוש והחלפה +או כאשר מעורבת גם קבוצת לכידה בכדי לשמור על הסקירה כאשר מפיקים כל סוג אחר של פלט. +ניתן לראות גם ב [4. Lookaround](#4-lookaround). + +## 2.6 חלופה + +בביטוי רגולרי, הקו ניצב `|` משמש בכדי להגדיר חלופה. חלופה היא כמו הצהרת OR (או) +בין ביטויים שונים. כעט את.ה עלול לחשוב שמערכות התווים והתו המשמש להגדרת חלופה יעבדו באותה הדרך. +אך ההבדל העיקרי בין מערכת תווים לבין חלופה הוא שמערכת תווים פועלת ברמת התו והחלופה +עובדת ברמת הביטוי. לדוגמא, הביטוי הרגולרי `(T|t)he|car` פירושו: או (אות גדולה `T` או אות קטנה +`t`, שלאחריהן אות קטנה `h`, שאחריה אות קטנה `e`) או (אות קטנה `c`, שאחריה תופיע האות `a`, +ולאחריה תופיע האות `r`). יש לשים לב שהכללתי את הסוגריים לשם ההבהרה, +בכדי להראות שאפשר להתמודד עם כל ביטוי בסוגריים והוא יתאים. + +
+"(T|t)he|car" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/fBXyX0/1) + +## 2.7 התעלמות מתווים מיוחדים + +לוכסן שמאלי `\` משמש בביטוי רגולרי בכדי להתעלם מהתו הבא. זה מאפשר לנו לכלול תוים שמורים כמו +`{ } [ ] / \ + * . $ ^ | ?` כתוים להתאמות. הכדי להשתמש בתוים המיוחדים הללו התו התאמה, +יש להוסיף אותו מראש עם `\` לפניו. לדוגמא, הביטוי הרגולרי `.` משמש בכדי להתאים כל תו חוץ משורה חדשה. +כעט בכדי לבצע התאמה עם הסימן `.` במחרוזת קלט, יהיה צורך בהוספת הלוכסן השמאלי. למשל בביטוי הרגולרי +`(f|c|m)at\.?` פירושו: אות קטנה `f`, `c` או `m`, שאחריהן תופיע האות הקטנה +`a`, ואחריה תופיע האות הקטנה `t`, ולבסוף יופיע באופן אופציונלי התו - `.`. + +
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/DOc5Nu/1) + +## 2.8 עוגנים + +בביטויים רגולרים, אנחנו משתמשים בעוגנים בכדי לבדוק אם סימן ההתאמה הוא סימן התחלה או +סימן סיום של מחרוזת הקלט. ישנם שני סוגי עוגנים: +הסוג הראשון הוא ה"קרט"(גג) `^` שבודק אם תו תואם הוא התו הראשון של הקלט והסוג השני הוא סימן הדולר +`$` אשר בודק אם תו תואם הוא התו האחרון שבקלט + +### 2.8.1 ה-"קרט" + +הסימן "קרט" `^` משמש לבדיקה אם תו תואם הוא התו הראשון של מחרוזת הקלט. +אם ניישם את הביטור הרגולרי הבא `^a` (כלומר 'a' חייב להיות התו ההתחלתי) +המחרוזת `abc`, תתאים לדרישות `a`. +אך אם ניישם את הביטוי הרגולרי `^b` על במחרוזת למעלה, היא לא תמצא אף התאמה. +בגלל שבמחרוזת `abc`, ה-"b" אינו תו התחלתי. בואו נסתכל על ביטוי רגולרי אחר +`^(T|t)he` שפירושו: אות גדולה `T` או אות קטנה `t` חייבת להיות התו הראשון של המחרוזת, +ואחריה האות הקטנה `h`, ולאחריה האות הקטנה `e`. + +
+"(T|t)he" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/5ljjgB/1) + +
+"^(T|t)he" => The car is parked in the garage.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/jXrKne/1) + +### 2.8.2 סימן הדולר + +סימן הדולר `$` משמש בכדי לבדוק אם התו התואם הוא התו האחרון במחרוזת. לדוגמא, +הביטוי הרגולרי `(at\.)$` פירושו: האות הקטנה `a`, שאחריה תיהיה האות הקטנה `t`, ואחריה התו נקודה `.` +וכל ההתאמה חייבת לביות בסופה של המחרוזת. + +
+"(at\.)" => The fat cat. sat. on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/y4Au4D/1) + +
+"(at\.)$" => The fat cat. sat. on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/t0AkOd/1) + +## 3. קיצורי מערכות תווים + +ישנם מספר קיצורים נוחים למערכות תווים נפוצות / ביטויים רגולרים: + +|קיצור|תיאור| +|:----:|----| +|.|תואם כל תו חוץ מתחילת שורה חדשה| +|\w|תואם תוים אלפא-נומריים (אותיות ומספרים): `[a-zA-Z0-9_]`| +|\W|תואם תוים לא אלפא-נומריים: `[^\w]`| +|\d|תואם ספרות: `[0-9]`| +|\D|תואם תוים שאינם ספרות: `[^\d]`| +|\s|תואם תוי רווח: `[\t\n\f\r\p{Z}]`| +|\S|תואם תוים שאינם רווח: `[^\s]`| + +## 4. הסתכלויות + +מבט לאחור ומבט לפנים (נקראים גם הסתכלויות) אלו הם סוגים ספציפים של קבוצות שאינן לוכדות. +(משמשות בכדי להתאים תבנית אך ללא הכנסתה לרשימת ההתאמות). +הסתכלויות משמשות כאשר יש להקדים תבנית בכך שזו תלויה בתבנית אחרת בכדי שהראשונה תתאים. +לדוגמא, תדמיין.י שאנחנו רוצים לקבל את כל המספרים שלפניהם יש את התו `$` מהמחרוזת +`$4.44 and $10.88`. אנחנו נשתמש בביטוי הרגולרי הבא: +`(?<=\$)[0-9\.]*` שפירושו: התאם את כל הספרות או התו `.` שלפני ההתאמה +קיים התו `$`. בטבלה מטה מוצגים סוגי המבטים המשמשים ביטויים רגולרים: + +|סימן|תיאור| +|:----:|----| +|?=|מבט קדימה חיובי| +|?!|מבט קדימה שלילי| +|?<=|מבט אחורה חיובי| +|?|מבט אחורה שלילי| + +### 4.1 מבט קדימה חיובי + +מבט קדימה חיובי דורש שבחלקו הראשון של ביטוי חייב להתקיים הביטוי מבט קדימה חיובי. +ההתאמה המוחזרת מכילה רק את הטקסט המתאים לחלק הראשון של הביטוי לפני המבט קדימה. +בכדי להגדיר מבט קדימה חיובי, משתמשים בסוגריים. בתוך הסוגריים, משתמשים בסימן שאלה +ואחריו סימן השוואה כך: `(?=...)`. ביטויי המבט קדימה נכתבים אחרי סימני סוג +המבט בתוך הסוגריים. לדוגמא, הביטוי הרגולרי `(T|t)he(?=\sfat)` פירושו: +התאם או את האות הקטנה `t` או את האות הגדולה `T`, שאחריה תיהיה האות `h`, ואחריה האות `e`. +בסוגריים אנחנו מגדירים מבט קדימה חיובי שאומר למנוע של הביטוי הרגולרי להתאים `The` או `the` +רק אם אחרי ההתאמה מופיעה המחרוזתS ` fat`. + +
+"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/IDDARt/1) + +### 4.2 מבט קדימה שלילי + +משתמשים במבט קדימה שלילי כשאנחנו צריכים לקבל את כל ההתאמות ממחרוזת קלט שלאחריהן אין תבנית מסויימת. +מבט קדימה שלילי יכתב באותה הדרך כמו שנכתב המבט קדימה החיובי. ההבדל היחיד הוא שמבקום +סימן השווה `=`, עלינו להשתמש בסימן קריאה `!` בכדי לציין את השלילה כלומר: `(?!...)`. +בואו נסתכל על הביטוי הרגולרי הבא `(T|t)he(?!\sfat)` שפירושו: התאם את כל המילים `The` או `the` +ממחרוזת קלט שאחריהן אין את התו רווח ולאחר מכן את המילה `fat`. + +
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/V32Npg/1) + +### 4.3 מבט אחורה חיובי + +משתמשים במבט אחורה חיובי בכדי לקבל את כל ההתאמות שלפניהן יש תבנית ספציפית מסויימת. +מבטים אחורה חיוביים נכתבים כך: `(?<=...)`. לדוגמא, +הביטוי הרגולרי `(?<=(T|t)he\s)(fat|mat)` פירושו: התאם +את כל המילים `fat` או `mat` ממחרוזת קלט שנמצאות לפני המילים `The` או `the` ויש רווח +שמפריד בינהן. + +
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/avH165/1) + +### 4.4 מבט אחורה שלילי + +משתמשים במבט אחורה שלילי בכדי לקבל את כל ההתאמות שלפניהן אין תבנית ספציפית מסויימת. +מבטים אחורה שליליים יכתבו כך: `(?. לדוגמא, הביטוי הרגולרי +`(? פירושו: התאם את כל המילים `cat` +ממחרוזת קלט שלא נמצאות אחרי המילים `The` or `the` כאשר רווח מפריד בינהן. + +
+"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/8Efx5G/1) + +## 5. דגלים + +דגלים נקראים גם משנים בגלל שהם משנים את הפלט של הביטוי הרגולרי. +ניתן להשתמש בדגלים הללו בכל סדר או שילוב והם חלק בלתי נפרד +מהביטוי הרולרי (RegExp). + +|דגל|תיאור| +|:----:|----| +|i|חוסר רגישות לאותיות: ההתאמה לא תהיה רגישה לאותיות קטנות או גדולות.| +|g|חיפוש גלובלי: התאם את כל ההאמות שהופיעו, לא רק את הראשונה.| +|m|רב-שורות: תווי-המטא העוגנים (`$` או `^`) עובדים על כל שורה.| + +### 5.1 חוסר רגישות לאותיות + +המשנה `i` משמש בכדי לבצע התאמות חסרות רגישות לאותיות קטנות או גדולות. +לדוגמא, בביטוי הרגולרי `/The/gi` פירושו: אות גדולה `T`, ואחריה אות קטנה +`h`, ואחריה אות קטנה `e`. ובסוף הביטוי הרגולרי יש את הדגל `i` שאומר למנוע הביטוי הרגולרי +להתעלם מהבדלי אותיות גדולות או קטנות. וכפי שאת.ה יכול לראות, +סיפקנו גם דגל `g` בגדלל שאנחנו רוצים לחפש את התבנית בכל מחרוזת הקלט. + +
+"The" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/dpQyf9/1) + +
+"/The/gi" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/ahfiuh/1) + +### 5.2 חיפוש גלובלי + +המשנה `g` משמש בכדי לבצע התאמות גלובליות (מוצא את כל ההתאמות במקום לעצור בהתאמה הראשונה). +לדוגמא, בביטוי הרגולרי `/.(at)/g` פירושו: כל תו חות משורה חדשה, שאחריו תיהיה האות הקטנה `a`, +ואחריה תיהיה האות הקטנה `t`. בגלל שסיפקנו את הדגל `g` בסופו של הביטוי הרגולרי, +הוא עכשיו ימצא את כל ההתאמות במחרוזת הקלט, לא רק את ההתאמה הראשונה (שזו התנהגות ברירת המחדל). + +
+"/.(at)/" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/jnk6gM/1) + +
+"/.(at)/g" => The fat cat sat on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/dO1nef/1) + +### 5.3 רב-שורות + +המשנה `m` משמש בכדי לבצע התאמות במספר רב של שורות. כפי שדנו על כך קודם לכן, +העוגנים `(^, $)` משמשים לבדיקה אם תבנית היא בהתחלה או בסופו של קלט. +אבל אם אנחנו רוצים שהעוגנים הללו יעבדו על כל שורה, אנחנו נשתמש בדגל `m`. לדוגמא, +בביטוי הרגולרי `/at(.)?$/gm` פירושו: אות קטנה +`a`, שלאחריה האות הקטנה `t` וכאופציה, כל תו שאינו שורה חדשה. ובגלל הדגל `m`, +המנוע של הביטוי הרגולרי יתאים את התבנית בכל סוף שורה במחרוזת. + +
+"/.at(.)?$/" => The fat
+                cat sat
+                on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/hoGMkP/1) + +
+"/.at(.)?$/gm" => The fat
+                  cat sat
+                  on the mat.
+
+ +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/E88WE2/1) + +## 6. התאמה חמדנית מול עצלה + +כברירת מחדל, ביטוי רגולרי יבצע התאמה חמדנית, זאת אומרת שביצוע ההתאמה תיהיה ארוכה ככל הניתן. +אנחנו יכולים להשתמש ב-`?` בכדי לבצע התאמה בצורה עצלה, פירוש הדבר שההתאמה תיהיה קצרה ככל שניתן. + +
+"/(.*at)/" => The fat cat sat on the mat. 
+ + +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/AyAdgJ/1) + +
+"/(.*?at)/" => The fat cat sat on the mat. 
+ + +[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/AyAdgJ/2) + + +## תרומה + +* Open a pull request with improvements +* Discuss ideas in issues +* Spread the word +* Reach out with any feedback +* [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/ziishaned.svg?style=social&label=Follow%20%40ziishaned)](https://twitter.com/ziishaned) + +## רישיון + +MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned) +
\ No newline at end of file From 3eed853d45a2671717db853c113192f41c0ea86d Mon Sep 17 00:00:00 2001 From: Recurduck Greco Date: Sat, 16 Oct 2021 03:01:36 +0300 Subject: [PATCH 2/3] Add hebrew translation link to all README files --- translations/README-cn.md | 1 + translations/README-de.md | 1 + translations/README-es.md | 1 + translations/README-fa.md | 1 + translations/README-fr.md | 1 + translations/README-gr.md | 1 + translations/README-hu.md | 1 + translations/README-ja.md | 1 + translations/README-ko.md | 1 + translations/README-pl.md | 1 + translations/README-pt_BR.md | 1 + translations/README-ru.md | 1 + translations/README-tr.md | 1 + translations/README-vn.md | 1 + translations/README-zh-simple.md | 1 + 15 files changed, 15 insertions(+) diff --git a/translations/README-cn.md b/translations/README-cn.md index c29158a..c075680 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## 什么是正则表达式? diff --git a/translations/README-de.md b/translations/README-de.md index c2c179f..92ac194 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -21,6 +21,7 @@ * [Polish](../translations/README-pl.md) * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) +* [עברית](translations/README-he.md) ## Was sind Reguläre Ausdrücke? diff --git a/translations/README-es.md b/translations/README-es.md index 907f9a1..065edeb 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Qué es una expresión regular? diff --git a/translations/README-fa.md b/translations/README-fa.md index 5595d45..74e35de 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -30,6 +30,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md)
diff --git a/translations/README-fr.md b/translations/README-fr.md index 4601616..face914 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Qu'est-ce qu'une expression régulière? diff --git a/translations/README-gr.md b/translations/README-gr.md index 763bd8f..2da80b5 100644 --- a/translations/README-gr.md +++ b/translations/README-gr.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Τι είναι μια Κανονική Έκφραση (Regular Expression); diff --git a/translations/README-hu.md b/translations/README-hu.md index 16a6804..726abf2 100644 --- a/translations/README-hu.md +++ b/translations/README-hu.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Mi az a reguláris kifejezés? diff --git a/translations/README-ja.md b/translations/README-ja.md index 308b639..ef9a289 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## 正規表現とは diff --git a/translations/README-ko.md b/translations/README-ko.md index e210de4..c41feb6 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## 정규표현식이란 무엇인가? diff --git a/translations/README-pl.md b/translations/README-pl.md index 13f1e9a..1569b31 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Co to jest wyrażenie regularne? diff --git a/translations/README-pt_BR.md b/translations/README-pt_BR.md index 68db0e1..3bcde4f 100644 --- a/translations/README-pt_BR.md +++ b/translations/README-pt_BR.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## O que é uma Expressão Regular? diff --git a/translations/README-ru.md b/translations/README-ru.md index d76116c..8cfe2c3 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -30,6 +30,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Что такое Регулярное выражение? diff --git a/translations/README-tr.md b/translations/README-tr.md index f3a3967..d891a64 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -31,6 +31,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Düzenli İfade Nedir? diff --git a/translations/README-vn.md b/translations/README-vn.md index c6d15f8..f975cd7 100644 --- a/translations/README-vn.md +++ b/translations/README-vn.md @@ -32,6 +32,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## Biểu thức chính quy là gì? diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md index f591052..d79767c 100644 --- a/translations/README-zh-simple.md +++ b/translations/README-zh-simple.md @@ -30,6 +30,7 @@ * [Русский](../translations/README-ru.md) * [Tiếng Việt](../translations/README-vn.md) * [فارسی](../translations/README-fa.md) +* [עברית](translations/README-he.md) ## 什么是正则表达式? From 8608347dea36b4fc658742f5860b84742fa80289 Mon Sep 17 00:00:00 2001 From: Recurduck Greco Date: Sat, 16 Oct 2021 17:06:09 +0300 Subject: [PATCH 3/3] fix typo hebrew --- README.md | 2 ++ translations/README-he.md | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 34ef8d6..54c4638 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,8 @@ * [Русский](translations/README-ru.md) * [Tiếng Việt](translations/README-vn.md) * [فارسی](translations/README-fa.md) +* [עברית](translations/README-he.md) + ## What is Regular Expression? diff --git a/translations/README-he.md b/translations/README-he.md index f8ec853..a66099f 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -120,10 +120,10 @@ |.|נקודה תואמת כל תו בודד למעט שבירת שורות.| |[ ]|מחלקת תווים. תואם כל תו הכלול בין הסוגריים המרובעים.| |[^ ]|מחלקת תווים שלילית. תואם כל תו שאינו כלול בין הסוגריים המרובעים| -|*|תואם 0 או יותר חזרות של הסמל הקודם.| -|+|תואם חזרה אחת או יותר של הסמל הקודם.| -|?|הופך את הסמל הקודם לאופציונלי.| -|{n,m}|סוגריים מסולסלים. תואם לפחות חזרות "n" אך לא יותר מ- "m" של הסמל הקודם.| +|*|תואם 0 או יותר חזרות של התו הקודם.| +|+|תואם חזרה אחת או יותר של התו הקודם.| +|?|הופך את התו הקודם לאופציונלי.| +|{n,m}|סוגריים מסולסלים. תואם לפחות חזרות "n" אך לא יותר מ- "m" של התו הקודם.| |(xyz)|קבוצת תווים. תואם את התווים xyz בסדר המדויק הזה.| |||חלופה (או). התאמה בין התווים שלפני או לתווים שאחרי הסמל.| |\|מתעלם מהתו הבא. זה מאפשר לך להתאים תווים שמורים [ ] ( ) { } . * + ? ^ $ \ ||