diff --git a/doc/unreal32docs.hu.html b/doc/unreal32docs.hu.html index dbc57898b..2b89742d2 100644 --- a/doc/unreal32docs.hu.html +++ b/doc/unreal32docs.hu.html @@ -3306,43 +3306,43 @@ Nagyon sokan nem is t

A.3 Ismétlő operátorok

Az egyik gyakori hiba, amit az emberek elkövetnek a regexekkel, hogy feltételezik, úgy működnek, mint a joker karakterek, vagyis hogy a * és ? karakterek pontosan úgy illeszkednek, mint egy joker karakterben. Noha ezeknek a karaktereknek valóban hasonló a jelentésük egy regexben, mégsem pontosan ugyanazok. Továbbá a reguláris kifejezések támogatnak más, haladóbb ismétlési módszereket is.

-A legegyszerűbb ismétlési operátor a ? operátor. Ez az operátor az előző karakternek 0 vagy 1 előfordulására illeszkedik. Ez az "előző karakternek" az, amiben a reguláris kifejezésbeli ? különbözik a joker karaktertől. Egy joker karakterben az "a?c" kifejezés illeszkedik egy "a"-ra, amelyet bármilyen karakter követ (vagy semmilyen), és ezt egy "c" karakter követi. Egy reguláris kifejezésben más jelentése van. Ott illeszkedik 0 vagy 1 egy "a" betűre, amelyet a "c" követ. Alaptvetően a ? módosítja az "a"-t úgy, hogy megadja, hány "a" fordulhat elő. Ahhoz, hogy a ?-et joker karakterként emuláljuk, a . operátort használjuk. A "a.?c" regex egyenértékű az előzőleg említett joker karakterrel. Olyan "a" betűre illeszkedik, amelyet 0 vagy 1 bármilyen karakter követ (a "?" módosítja a "."-ot), és azt követi egy "c". +A legegyszerűbb ismétlő operátor a ? operátor. Ez az operátor az előző karakternek 0 vagy 1 előfordulására illeszkedik. Ez az "előző karakternek" az, amiben a reguláris kifejezésbeli ? különbözik a joker karaktertől. Egy joker karakterben az "a?c" kifejezés illeszkedik egy "a"-ra, amelyet bármilyen karakter követ (vagy semmilyen), és ezt egy "c" karakter követi. Egy reguláris kifejezésben más jelentése van. Ott illeszkedik 0 vagy 1 egy "a" betűre, amelyet a "c" követ. Alaptvetően a ? módosítja az "a"-t úgy, hogy megadja, hány "a" fordulhat elő. Ahhoz, hogy a ?-et joker karakterként emuláljuk, a . operátort használjuk. A "a.?c" regex egyenértékű az előzőleg említett joker karakterrel. Olyan "a" betűre illeszkedik, amelyet 0 vagy 1 bármilyen karakter követ (a "?" módosítja a "."-ot), és azt követi egy "c".

A következő ismétlő operátor a *. Ez az operátor ismét hasonló egy joker karakterre. Az előző karakternek 0 vagy több előfordulására illeszkedik. Megjegyzendő, hogy ez az "előző karakternek" olyasvalami, ami minden ismétlő operátor jellemzője. Az "a*c" illeszkedik 0 vagy több "a"-ra, amelyet "c" követ. Például az "aaaaaac"-re illeszkedik. És mégegyszer, ahhoz, hogy ez az operátor joker karakterként működjön, használjuk az "a.*c" kifejezést, aminek hatására a "*" a "."-ot (bármilyen karakter) módosítja, inkább mint az "a"-t.

A + operátor nagyon hasonló a *-hoz. Viszont ahelyett, hogy 0 vagy több karakterre illeszkedne, illeszkedik 1 vagy több karakterre. Alapvetően az "a*c" illeszkedik a "c"-re (0 "a", amelyet c követ), ugyanakkor az "a+c" nem. Az "a+" azt fejezi ki, hogy kell lennie "legalább" 1 "a"-nak. Így a "c"-re nem illeszkedik, de az "ac"-re és "aaaaaaaaac"-re igen.

-The most advanced repetition operator is known as a "boundary." A boundary lets you set exact constraints on how many of the previous character must be present. For example, you may want to require exactly 8 a's, or at least 8 a's, or between 3 and 5 a's. The boundary allows you to accomplish all of these. The basic syntax is {M,N} where M is the lower bound, and N is the upper bound. For example, the match between 3 and 5 a's, you would do "a{3,5}". However, you do not have to specify both numbers. If you do "a{8}" it means there must be exactly 8 a's. Therefore, "a{8}" is equivilent to "aaaaaaaa." To specify the "at least" example, you basically create a boundary that only has a lower bound. So for at least 8 a's, you would do "a{8,}". +A leghaladóbb ismétlő operátor "intervallum" néven ismert. Egy intervallum operátorral pontos megszorítást tehetünk arra, hogy az előző karakterből mennyinek kell lennie. Például lehet, hogy pontosan 8 "a" megkövetelésére van szükségünk, vagy legalább 8 "a"-ra vagy 3 és 5 közötti darabszámú "a"-ra. Egy intervallum operátorral ezek mindegyike megvalósítható. Az alapvető szintaktikája az "{M,N}", ahol M az alsó határ, és N a felső határ. Például 3 és 5 közötti darabszámú "a" illesztésére azt írjuk, hogy "a{3,5}". Mindamellett nem kötelező mindkét számot megadni. Ha "a{8}"-at írunk, az azt jelenti, hogy pontosan 8 darab "a"-nak kell lennie. Ezért az "a{8}" megegyezik az "aaaaaaaa"-val. Ahhoz, hogy a "legalább"-os példát valósítsuk meg, alapvetően egy olyan intervallumot adunk meg, aminek csak alsó határa van. Eképpen a legalább 8 "a"-ra azt írjuk, hogy "a{8,}".

-By default, all of the repetition operators are "greedy." Greediness is a somewhat complex idea. Basically, it means that an operator will match as many characters as it can. This is best explained by an example.

Say we have the following text:
+Alapértelmezésben mindegyik ismétlő operátor "mohó". A mohóság egy kissé összetett fogalom. Alapvetően azt jelenti, hogy az operátor annyi karakterre illeszkedik, amennyire csak tud. Ezt a legkönnyebb elmagyarázni egy példával.

Mondjuk, van a következő szövegünk:
HELLO
-And the following regex:
+És a következő regexünk:
.+L

-In this example, you might think that the .+ matches "HE." However, this is incorrect. Because the + is greedy, it matches "HEL." The reason is, it chooses the largest portion of the input text that can be matched while still allowing the entire regex to match. In this example, it chose "HEL" because the only other requirement is that the character after the text matched by .+ must be an "L". Since the text is "HELLO", "HEL" is followed by an "L," and therefore it matches. Sometimes, however, it is useful to make an operator nongreedy. This can be done by adding a ? character after the repetition operator. Modifying the above to, ".+?L" the .+? will now match "HE" rather than "HEL" since it has been placed in a nongreedy state. The ? can be added to any repetition character: ??, *?, +?, {M,N}?.

+Ebben a példában, lehet, hogy azt gondoljuk, hogy a .+ a "HE"-re illeszkedik. Azonban ez helytelen. Mivel a + mohó, a "HEL"-re illeszkedik. Az indok az, hogy a beviteli szöveg legnagyobb illeszthető részét választja, miközben mégis megengedi a teljes regexnek, hogy illeszkedjen. Ebben a példában azért választotta a "HEL"-t, mert az egyetlen másik követelmény csak az, hogy a ".+"-ra illeszkedő szöveg utáni karakternek "L"-nek kell lennie. Mivel a szöveg "HELLO", a "HEL"-t "L" követi, ezért illeszkedik. Néha viszont jól jön, ha egy operátort nem mohóvá tudunk tenni. Ezt úgy tehetjük meg, hogy "?"-et teszünk az ismétlő operátor után. A fentit módosítva ".+?L"-re, a .+? mostmár a "HE"-re illeszkedik, mintsem a "HEL"-re, mert nem mohó állapotba helyeztük. A ? bármilyen ismétlő karakter után helyezhető: ??, *?, +?, {M,N}?.

-

A.4 Bracket Expressions

-
Bracket expressions provide a convenient way to do an "or" operator. For example, if you want to say "match an a or a b." The bracket expression gets its name from the fact that it is enclosed in brackets ([]). The basic syntax is that the expression includes a series of characters. These characters are then treated as though there were an "or" between them. As an example, the expression "[abc]" matches an "a," a "b," or a "c." Therefore, the regexp "a[bd]c" matches "abc" and "adc" but not "acc." +

A.4 Zárójeles kifejezések

+
A zárójeles kifejezések kényelmes módot nyújtanak ahhoz, hogy "vagy" műveletet végezzünk. Például ha azt szeretnénk mondani, hogy "illeszkedjen az a-ra vagy a b-re". A zárójeles kifejezés onnan kapja a nevét, hogy zárójelek ([]) közé tesszük. Az alapvető szintaktikája az, hogy ez a kifejezés magában foglal egy karaktersorozatot. Ezeket a karaktereket majd úgy kezeli, mintha "vagy" lenne közöttük. Például az "[abc]" kifejezés illeszkedik egy "a", egy "b" vagy egy "c" karakterre. Ezért az "a[bd]c" regex illeszkedik az "abc"-re és az "adc"-re, de az "acc"-re nem.

-One very common thing to do is to check for things such as, a letter, or a digit. Rather than having to do, for example, "[0123456789]", the bracket operator supports ranges. Ranges work by specifying the beginning and ending point with a - between them. Therefore, a more simplistic way to test for a digit is to simply do "[0-9]". The same thing can be used on letters, or in fact, any range of ASCII values. If you want to match a letter, simply do "[a-z]" since Unreal is case insensitive, this will match all letters. You can also include multiple ranges in the same expression. To match a letter or a number, "[0-9a-z]". One complication that this creates is that the - is a special character in a bracket expression. To have it match a literal -, the easiest way is to place it as either the first or last character in the expression. For example, "[0-9-]" matches a digit or a -. +Nagyon gyakori, hogy olyan dolgokat vizsgálunk, mint egy betű vagy egy szám. Inkább, mint hogy például "[0123456789]"-et kelljen írnunk, a zárójel operátor támogat karaktertartományokat. Ezek a tartományok úgy működnek, hogy megadjuk a kezdő- és végpontot, köztük egy kötőjellel. Például egy egyszerűbb módja egy számjegy vizsgálatának az, hogy azt írjuk, "[0-9]". Ugyanezt használhatjuk betűkre is vagy tulajdonképpen az ASCII értékek bármely tartományára. Ha egy betűt szeretnénk illeszteni, egyszerűen írjunk "[a-z]"-t, mert az Unreal a kis- és nagybetűkre nem érzékeny, ez minden betűre fog illeszkedni. Ugyanaz a kifejezés tartalmazhat több tartományt is. Egy betűre vagy egy számra illesztéshez a "[0-9a-z]"-t írhatjuk. Az egyetlen bonyodalmat az okozhatja, hogy a - egy különleges karakter a zárójeles kifejezésben. A konstans kötőjelre illesztéshez a legegyszerűbb mód az, hogy vagy legelső, vagy legutolsó karakterként tegyük a kifejezésbe. Például a "[0-9-]" illeszkedik egy számjegyre vagy a kötőjelre.

-To make things even more simple, there are several "character classes" that may be used within a bracket expression. These character classes eliminate the need to define certain ranges. Character classes are written by enclosing their name in :'s. For example, "[0-9]" could also be written as "[:isdigit:]". The list below shows all of the available character classes and what they do: +Hogy mégjobban leegyszerűsítsük a dolgokat, számos "karakterosztály" van, amiket zárójeles kifejezésben használhatunk. Ezek a karakterosztályok nélkülözhetővé teszik bizonyos tartományok meghatározását. A karakterosztályokat kettőspontok közé zárva írjuk. Például a "[0-9]" úgy is írható, hogy "[:isdigit:]". Az alábbi lista megmutatja az összes rendelkezésre álló karakterosztályt, és amit csinálnak:

-One important note about character classes is that they MUST be the only element in the expression. For example, [:isdigit:-] is NOT legal. Instead, you can accomplish this same goal by nesting the expressions, for example, to do the same thing as "[0-9-]" using a character class, you could do "[[:isdigit:]-]". +Egy fontos dolog, amit meg kell jegyezni a karakterosztályokról, hogy CSAK egyedül állhatnak a zárójeles kifejezésben. Például az [:isdigit:-] NEM érvényes. Ehelyett ugyanezt a célt elérheted a kifejezések beágyazásával, például a "[0-9-]"-et karakterosztály használatával úgy írhatjuk, hogy "[[:isdigit:]-]".

-The last feature of the bracket expression is negation. Sometimes it is useful to say "anything except these characters." For example, if you want to check if the character is "not a letter," it is easier to list a-z and say "not these," than it is to list all the non-letters. Bracket expressions allow you to handle this through negation. You negate the expression by specifying a "^" as the first character. For example, "[^a-z]" would match any non-letter. As with the -, if you want to include a literal ^, do not place it in the first position, "[a-z^]". Also, to negate a character class, you must once again use nesting, "[^[:isdigit:]]" would match any non-digit.

+A zárójeles kifejezés utolsó sajátossága a negálás. Néha hasznos, hogy azt mondhassuk, "bármilyen karaktert, csak ezeket ne". Például ha azt szeretnénk ellenőrizni, hogy a karakter "nem betű", egyszerűbb felsorolni az "a-z"-t, és azt mondani, "ne ezeket", mintsem felsorolni mindezeket a nem betűket. A zárójeles kifejezések lehetővé teszik ennek a kezelését negálás útján. Azzal negáljuk a kifejezést, hogy megadunk egy "^" jelet első karakterként. Például az "[^a-z]" minden nem betűre illeszkedik. Úgy, ahogy a kötőjellel is, ha konstans ^ jelet szeretnénk a kifejezésbe tenni, ne az első pozícióba rakjuk: "[a-z^]". Karakterosztályt is negálhatunk, ehhez szintén beágyazást kell használnunk; az "[^[:isdigit:]]" minden nem számjegy karakterre illeszkedik.

A.5 Assertions

Assertions allow you to test for certain conditions that are not representable by character strings, as well as providing shortcuts for some common bracket expressions.