Porovnávané verzie

Kľúč

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

Funkcia %RxFind




Funkcia

Funkcia

hľadá výskyt podtextu v texte.

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 %FindStr%RxFind(
   TEXT in text,
   TEXT in podTextregExp,
   BOOL INT	in smerfrom := @TRUE 1,
   INT	out endIndex
 )


Parametre


textText, ktorý bude prehľadaný.
podText
regExp
Text
Regulárny výraz, ktorý
sa
bude
hľadať
hľadaný vo vstupnom parametri text.
smer@TRUE - hľadanie od začiatku textu.
@FALSE - hľadanie od konca textu
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

výskytu textu podText v texte Text od začiatku, ak parameter smer nie je uvedený, alebo nadobudne hodnotu @TRUE. Ak parameter smer nadobudne hodnotu @FALSE, hľadanie prebieha od konca. Ak je hľadanie neúspešné, funkcia vráti hodnotu 0

, 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
 %FindStr;hľadáme výraz "nejaky"
%RxFind("text nejaky text", "nejaky")				;vráti hodnotu 6

;hľadáme výraz "nejaky" na začiatku
%RxFind("text nejaky text", "^nejaky")				;vráti hodnotu 0 - výraz "nejaky" sa nenáchádza na začiatku

;hľadáme výraz "text" na začiatku
%RxFind("text nejaky text", "^text")				;vráti hodnotu 1 - výraz "text" sa náchádza na začiatku

;hľadáme výraz "text" na konci
%RxFind("text nejaky text", "text$")				;vráti hodnotu 1
 %FindStr 13 - výraz "text" sa nachádza na konci (začína na pozícii 13)

;hľadáme výraz "xt" alebo výraz "ne"
%RxFind("text nejaky text", "xt | ne")				;vráti hodnotu 3 - výraz "xt" bol nájdený ako prvý a začína na pozícii 3

;hľadáme výraz "nejaky" na začiatku alebo "text" na konci
%RxFind("text nejaky text", @TRUE)   ; vráti hodnotu 1
 %FindStr "^nejaky | text$")		;vráti hodnotu 12 - zadaný reťazec končí výrazom "text" (a tento výraz začína na pozícii 12)

;hľadáme znak v rozsahu a-d
%RxFind("text nejaky text", "[a-d]")				;vráti hodnotu 9 - na tejto pozícii sa nachádza znak a

;hľadáme iný znak ako a-d
%RxFind("text nejaky text", "[^a-d]")				;vráti hodnotu 1 - na tejto pozícii sa nachádza znak t

;hľadáme sekvenciu znaku 'e' 2-krát po sebe
%RxFind("text neejaky text", @FALSE)  ; vráti hodnotu 13 "e{2}")				;vráti hodnotu 7

;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 20 - vyhovuje výraz "otázočka", _last = 27

;hľadáme výraz "otá.+ka", (".+" 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 hodnotu 20 - vyhovuje výraz "otázočka", _last = 27


Príklady regulárnych výrazov


Regulárny výrazVýznam
výrazHľadá zadaný výraz v reťazci.
^výrazHľadá zadaný výraz na začiatku reťazca.
výraz$Hľadá zadaný výraz na konci reť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 reť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á výraz "oper.tor", kde sa namiesto . 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 .* 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).