Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

Funkcia %RxFind




Funkcia

Funkcia nájde vo vstupnom texte prvý substring zodpovedajúci zadanému regulárnemu výrazu a vráti index, na ktorom sa daný substring začína. Vyhľadávanie je citlivé na malé a veľké písmená.

Deklarácia


Blok kódu
languageesl
themeConfluence
INT %RxFind(
   TEXT in text,
   TEXT in regExp,
   INT	in from := 01,
   INT	out endIndex := 0
 )


Parametre


textText, ktorý bude prehľadaný.
regExpRegulárny výraz, ktorý bude hľadaný vo vstupnom parametri text.
fromIndex, od ktorého bude prehľadávaný vstupný parameter text (nepovinný vstupný internet).
endIndexIndex, na ktorom končí substring zodpovedajúci zadanému regulárnemu výrazu (nepovinný výstupný parameter).


Príklad

Funkcia vráti index, na ktorom začína substring zodpovedajúci zadanému regulárnemu výrazu (1..n). Voliteľný je parameter endIndex. Ak je tento parameter zadaný, po volaní funkcie je jeho hodnota rovná koncovému indexu substringu, ktorý vyhovuje zadanému regulárnemu výrazu.

Ak je hľadanie neúspešné, alebo ak je parameter from presahujúci celkovú dĺžku vstupného textu, funkcia vráti hodnotu 0.

Ak parameter regExp nie je platný regulárny výraz, funkcia vráti hodnotu -1.

Ak je niektorý zo vstupných parameterov neplatný, funkcia vráti nedefinovanú hodnotu.

 



Blok kódu
languageesl
themeRDark
;vhľadáme stringuvýraz "text nejaky text" sa pokúšame sa nájsť začiatočný index výrazu "nejaky"
%RxFind("text nejaky text", "nejaky")				;vráti hodnotu 6, pretože výraz "nejaky" sa nachádza na pozícii 6 v zadanom stringu

;v stringu "text nejaky text" sa pokúšame nájsť hľadáme výraz "nejaky" na začiatku stringu
%RxFind("text nejaky text", "^nejaky")				;vráti hodnotu 0, pretože- výraz "nejaky" sa nenáchádza na začiatku zadaného stringu

;v stringu "text nejaky text" sa pokúšame nájsť hľadáme výraz "text" na začiatku stringu
%RxFind("text nejaky text", "^text")				;vráti hodnotu 1, pretože- výraz "text" sa náchádza na začiatku zadaného stringu (začína na pozícii 1)

;v stringu "text nejaky text" sa pokúšame nájsť hľadáme výraz "text" na konci stringu
%RxFind("text nejaky text", "text$")				;vráti hodnotu 13, pretože- výraz "text" sa náchádzanachádza na konci zadaného stringu (začína na pozícii 13)

;v stringu "text nejaky text" sa pokúšame nájsťhľadáme výraz "xt" alebo výraz "ne"
%RxFind("text nejaky text", "xt | ne")				;vráti hodnotu 3, pretože- výraz "xt" bol nájdený ako prvý a začína na pozícii 3

;vhľadáme stringuvýraz "text nejaky text" sana snažímezačiatku zistiť, či začína výrazom "nejaky", alebo končí výrazom "text"alebo "text" na konci
%RxFind("text nejaky text", "^nejaky | text$")				;vráti hodnotu 12, pretože- zadaný stringreťazec končí výrazom "text" (a tento výraz začína na pozícii 12)

;v stringu "text nejaky text" sa snažíme zistiť, či obsahuje znaky hľadáme znak v rozsahu a-d
%RxFind("text nejaky text", "[a-d]")				;vráti hodnotu 9, pretože- na tejto pozícii sa nachádza znak v rozsahu a-d

;vhľadáme stringuiný "textznak nejaky text" sa snažíme zistiť, či obsahuje znaky okrem znakov v rozsahu ako a-d
%RxFind("text nejaky text", "[^a-d]")				;vráti hodnotu 1, pretože- na tejto pozícii sa nachádza znak, ktorý je mimo rozsahu a-d t

;v stringu "text neejaky text" sa snažíme zistiť, či obsahuje hľadáme sekvenciu znaku 'e' 2-krát po sebe
%RxFind("text neejaky text", "e{2}")				;vráti hodnotu 7, pretože na tejto pozícii sa nachádza znak 'e' 2-krát po sebe


%RxFind("text nejaky text", "[a-z]+", 1)			;vráti hodnotu 1
%RxFind("123text nejaky text", "[a-z]+", 1)			;vráti hodnotu 4
%RxFind("text nejaky text", "[a-z]+", 5

;hľadáme výraz "otá.ka", ("." znamená jeden výskyt ľubovolného znaku)
%RxFind("Jedna otázka alebo otázočka", "otá.ka")	;vráti hodnotu 7 - na tejto pozícii sa nachádza vyhovujúci výraz "otázka"

;hľadáme výraz "otá.*ka", (".*" znamená 0 alebo viac výskytov ľubovolného znaku), pričom zadaný reťazec prehľadávame od pozície 10
%RxFind("Jedna otázka alebo otázočka", "otá.*ka", 10, _last)		;vráti hodnotu 620 - vyhovuje výraz "otázočka", _last = 11
%RxFind("text nejaky text27

;hľadáme výraz "otá.+ka", ("[a-z]+", 20, _last)	;vráti hodnotu -1, _last = -1
%RxFind("text nejaky text", "", 20.+" znamená 1 alebo viac výskytov ľubovolného znaku), pričom zadaný reťazec prehľadávame od pozície 10
%RxFind("Jedna otázka alebo otázočka", "otá.+ka", 10, _last)			;vráti nedefinovanú hodnotu (dĺžka20 regulárneho- výrazuvyhovuje je 0)výraz "otázočka", _last = 027


Príklady regulárnych výrazov


Regulárny výrazVýznam
výrazHľadá zadaný výraz v stringureťazci.
^výrazHľadá zadaný výraz na začiatku stringureťazca.
výraz$Hľadá zadaný výraz na konci stringureťazca.
výraz1 | výraz2Hľadá jeden zo zadaných výrazov.
^výraz | výraz$Hľadá výraz na začiatku alebo na konci stringureťazca.
[a-d]Hľadá znaky v zadanom rozsahu (v tomto prípade znaky a,b,c,d).
[^a-d]Hľadá všetky znaky okrem znakov v zadanom rozsahu (v tomto prípade všetky znaky okrem a,b,c,d).
a{5}"Hľadá sekvenciu 5 znakov 'a' idúcich po sebe.
oper.torHľadá slovo výraz "oper.tor", kde sa namiesto . nachádza hľadá práve jeden neznámy znak (nájde slová ako operátor, operator, operxtor, ...).
oper.*torHľadá slovo "oper.*tor", kde sa namiesto .* nachádza niekoľko hľadá 0 alebo viac neznámych znakov (nájde slová ako opertor, operátor, operator, operaaaaaator, ...).
oper.+torHľadá slovo "oper.+tor", kde sa namiesto .+ hľadá 1 alebo viac neznámych znakov (nenájde slovo opertor).