Použití Pokročilých spouštěčů

V následující kapitole jsou informace a používání pokročilých spouštěčů pro získání názvů programů v CIMCO DNC-Max. Extrakce komentářů v NC-Base se provádí stejným způsobem.

Tato kapitola obsahuje informace, které jsou použitelné pouze pro pokročilé uživatele. Pokud nepotřebujete nebo nerozumíte pokročilým spouštěčům, můžete tuto kapitolu přeskočit.

Pokročilé spouštěče NC-Base jsou upravenou verzí toho, co je známé jako Regulární výraz. Regulární výrazy jsou výkonný způsob vyhledávání textových řetězců.

Následující příklad ukazuje, jak lze pokročilé spouštěče použít. Mějte ISO NC program s čísly řádku ve formátu N2010 na začátku každého řádku, ale postprocesor, použitý pro vygenerování souboru, vložil číslo řádku komentáře na začátek souboru bez čísla bloku. Pokud se chcete ujistit, že tyto řádky nebudou odeslány do CNC stroje, měli byste zadat Výchozí spouštěč:

Tento spouštěč je tvořen těmito prvky:

ˆNásledující spouštěč musí být nalezen na začátku řádky
NHledání písmene N
[0-9]Jakýkoliv znak v rozsahu 0 až 9
{1,4}Vyhledá pozice 1-4 předchozího znaku (0 - 9)

To znamená: Začít přenos od první řádky, která má na začátku řádku N následované 1 až 4 číslicemi.

Na konci této kapitoly je příklad ještě pokročilejšího spouštěče.

Seznam symbolů rozpoznávaných Pokročilými spouštěči

.Vrátí jakýkoliv jeden znak
*0 nebo víc předchozího výrazu
+1 nebo víc předchozího výrazu
-Rozsah
ˆNegovat výběr (uvnitř zadaných oddělovačů [])
{Začátek intervalu
}Konec intervalu
[Začít sadu
]Ukončit sadu
?Předchozí výraz je volitelný
|Předchozí výraz NEBO další výraz
ˆUkotvení na začátku řádku
$Ukotvení na konci řádku
(Začátek vnořeného výrazu
)Konec vnořeného výrazu
<Začátek extrakce
>Konec extrakce

Pro použití speciálního symbolu jako součásti hledaného textu před něj umístěte znak opačné lomítko '\'.

Příklad: Pro vyhledání '\' na začátku řádku zadejte ˆ\\.

Sady (ohraničení)

Sady se zadávají symboly '[' a ']'.

Příklad: [abc] vyhledá výskyt kteréhokoliv ze znaků 'a', 'b' nebo 'c'.

Sadu můžete negovat zadáním 'ˆ' jako prvního znaku v sadě.

Příklad: [ˆabc] vyhledá jakýkoliv znak, který není 'a', 'b' nebo 'c'.

Rozsahy

Rozsahy se definují symbolem '-'.

Příklad: [a-z][0-9] vyhledá jakýkoliv znak v rozsahu 'a' až 'z' následovaný jakýmkoliv číslem '0' až '9'.
Příklad: [a-zA-Z0-9] vyhledá jakékoliv písmeno nebo číslo.

Intervalové výrazy

Intervalové výrazy se zadávají symboly '{' a '}'.

Example: [0-9]{1,4} will find 1-4 digits.
Example: [0-9]{3,} will find 3 or more digits.
Example: [0-9]{4} will find exacly 4 digits.

Extrakce vnořeného výrazu

Pro extrakci části výrazu vnořený výraz umístěte mezi '<' a '>'.

Příklad: Pro extrakci čísla programu 1234 z řetězce PRG=1234, zadejte PRG=<[0-9]{4}>.

Regulární výrazy

Regulární výraz (RE) je jeden nebo několik neprázdných větví oddělených '|'. Vyhledá vše, co odpovídá některé z větví.

Větev je jeden nebo několik kaskádově umístěných součástí. Vyhledá odpovídající výsledek pro první, po něm následuje druhý, atd.

Součást je základní složka, která může být následována jedním '*', '+', '?' nebo ohraničením. Základní složka následovaná '*' vyhledá sekvenci 0 nebo víc výsledků hledání základní složky. Základní složka následovaná '+' vyhledá sekvenci 1 nebo víc výsledků hledání základní složky. Základní složka následovaná '?' vyhledá sekvenci 0 nebo 1 výsledků hledání základní složky.

Ohraničení je '{' následované decimálním celým číslem bez znaménka, které může být následováno ',' a případně dalším decimálním celým číslem bez znaménka, vždy ukončeným znakem '}'. Celé číslo musí ležet v rozsahu 0 a 255 včetně, a pokud jsou dvě, první nesmí být větší než druhé. Základní složka, následována ohraničením s jedním celým číslem "i" a bez čárky, vrátí posloupnost přesně "i" opakování výskytu základní složky. Základní složka, následována ohraničením s jedním celým číslem "i" a "a" za čárkou, vrátí posloupnost "i" nebo víc opakování výskytu základní složky. Základní složka, následována ohraničením s dvěma celými čísly "i" a "j", vrátí posloupnost "i" až "j" (včetně) opakování výskytu základní složky.

Základní složka je regulární výraz ohraničený závorkami '()' (odpovídající regulárnímu výrazu), prázdnou sadou '()' (odpovídající nulovému řetězci) , výrazem v závorkách (viz níže), '.' (odpovídající jakémukoliv jednomu znaku), 'ˆ' (odpovídající nulovému řetězci na začátku řádku), '$' (odpovídající nulovému řetězci na konci řádku), '\' následovanému některým ze znaků ˆ.[$()|*+?{\ (odpovídající znaku, který je za řádnému znaku), '\' následované kterýmkoliv jiným znakem (odpovídající znaku, načtenému jako řádný znak, jako kdyby tam '\' nebylo umístěno) nebo jedním znakem bez dalšího významu (odpovídající tomuto znaku). Symbol '{' následovaný jiným znakem, než je číslice, je řádný znak, ne začátek ohraničení. Není dovoleno ukončit regulární výraz znakem '\'.

Výraz v závorkách je seznam znaků umístěných do hranatých závorek '[]'. Obvykle vrátí jakýkoliv jeden znak ze seznamu (ale viz dále). Pokud seznam začíná s 'ˆ', vrátí jakýkoliv jeden znak (ale viz dále), které není ve zbytku seznamu. Pokud jsou dva znaky v seznamu odděleny '-', je to zkratka pro kompletní rozsah znaků mezi těmito dvěma (včetně) v porovnávající posloupnosti, např. '[0-9]' v ASCII odpovídá desítkovým číslicím. Není dovoleno, aby dva rozsahy měly stejný koncový bod, např. 'a-c-e'.

Pro zahrnutí symbolu ']' do seznamu ho uveďte jako první znak (následovaný například 'ˆ'). Pro zahrnutí symbolu '-' ho umístěte jako první nebo poslední znak, nebo druhý koncový bod rozsahu. Pro použití symbolu '-' jako prvního koncového bodu rozsahu ho umístěte do '[.' a '.]', aby se z něho stal porovnávající prvek (viz dole). S výjimkou těchto a některých kombinací s '[' (viz následující odstave), všechny ostatní speciální znaky, včetně '\', ztrácí ve výrazech v závorkách svůj speciální význam.

Ve výrazu v závorkách představuje porovnávací prvek (znak, posloupnost několika znaků, která se porovnává jako by to byl jeden znak, nebo název porovnávací sekvence název z některého), ohraničený v '[.' a '.]', posloupnost znaků porovnávacího prvku. Posloupnost je jeden prvek seznamu výrazu v závorkách. Výraz v závorkách, obsahující víceznakový porovnávací prvek, tak může vrátit víc než jeden znak, např. pokud porovnávací sekvence obsahuje porovnávací prvek 'ch', pak regulární výraz '[[.ch.]]*c' vrátí prvních pět znaků 'chchcc'.

Ve výrazu v závorkách je porovnávací prvek mezi '[=' a '=]' je třída ekvivalence, a zastupuje posloupnost znaků všech porovnávacích prvků ekvivalentním tomuto, včetně něho. (Pokud nejsou žádné další ekvivalentní porovnávací znaky, je výsledek stejný, jako kdyby byly ohraničující oddělovače '[.' a '.]'.) . Například pokud "o" a "ˆ" jsou členy třídy ekvivalence, pak '[[=o=]]', '[[=ˆ=]]' a '[oˆ]' jsou synonyma. Třída ekvivalence nesmí být koncovým bodem rozsahu.

V případě, že by mohl regulární výraz vrátit víc než jeden podřetězec daného řetězce, regulární výraz vrátí ten, který začíná v řetězci nejdříve. Pokud by regulární řetězec mohl vrátit víc než jeden podřetězec začínající v daném místě, vrátí ten nejdelší. Podvýrazy také vrátí nejdelší podřetězce s aplikací omezení, že celý výsledek může být libovolně dlouhý s tím, že podvýraz, začínající v regulárním výrazu dříve, převáží nad řetězcem začínajícím později. Pamatujte, že podvýrazy vyšší úrovně tak mají vyšší prioritu nebo podvýrazy komponent s nižší úrovní.

Délky výsledků se měří ve znacích, ne v porovnávacích prvcích. Nulový řetězec je považován za delší, než žádný výsledek hledání. Například 'bb*' vrátí tři střední znaky 'abbbc', '(wee|week)(knights|nights)' vrátí všech deset znaků 'weeknights' a '(.*).*' porovnané s podvýrazem 'abc' v závorkách vrátí všechny tři znaky a když je '(a*)*' porovnáno s 'bc', vrátí celý regulární výraz a podvýraz v závorkách nulový řetězec.

Příklad Pokročilého spouštěče

Pokročilé spouštěče lze použít i pro vyhledání čísel programů, informací o cestě, atd. Následující příklad lze použít ve standardním protokolu nastavení automatického příjmu pro identifikaci názvu programu v přijatém souboru.

Pokud ukládáme název programu v NC programu jako O2123 (kde 2123 je číslo programu), ale chceme vyhledat pouze čísla programů na určitém řádku, pokud předchozí řádek začíná znakem %. V takovém případě bychom měli zadat:

Tento spouštěč je tvořen těmito prvky:

ˆNásledující spouštěč musí být nalezen na začátku řádky
%Hledání znaku %
.Vrátí jakýkoliv znak
*Vrátí nula nebo několik předchozích znaků, v tomto případě jakýkoliv znak
\LFVrátí znak konce řádku
.Vrátí jakýkoliv znak
*Vrátí nula nebo několik předchozích znaků, v tomto případě jakýkoliv znak
OHledání znaku O
<Začátek názvu programu
[0-9]Jakýkoliv znak v rozsahu 0 až 9
{4}Vrátí 4 předchozí znaky, v tomto případě všechny znaky v rozsahu 0 až 9
>Konec názvu programu
(Začátek vnořeného výrazu
[ˆ0-9]Jakákoliv znak mimo rozsah 0 až 9
+Vrátí jeden nebo několik předchozích znaků, v tomto případě všechny znaky mimo rozsah 0 až 9
|Vrátí výraz vlevo nebo vpravo od '|'
$Musí být na konci řádky
)Konec vnořeného výrazu

Což znamená v překladu přibližně toto:

Vyhledej řádek začínající %, pak akceptuj všechny znaky až na konec řádku. Na dalším řádku akceptuj všechny znaky až po O následované 4 číslicemi. Tyto 4 číslice musí být následovány buď jedním nebo několika nečíselnými znaky, nebo musí být na konci řádku.

Poslední část zajišťuje, že musí být zadány přesně 4 číslice. Protože něco jako O12345 je O následované 4 číslicemi, za kterými je něco jako číslice (5), není to proto vráceno.

Symboly '<' a '>' jsou oddělovací znaky pro část výrazu, které by měl být extrahovány pro získání čísla programu. V tomto případě 4 číslice.