Difference between revisions of "Documentation/SL/How Tos/Regularni izrazi in Writer"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Združevanje (...) in povratni sklici \x)
(Tabulatorji, nove vrstice, novi odstavki \t \n $)
Line 268: Line 268:
 
V programu Writer lahko '''novo vrstico''' vnesete s kombinacijo tipk Shift+Enter. Znak za novo vrstico je tako vstavljen v besedilo in besedilo, ki sledi, se začne v novi vrstici. To ni enako novemu odstavku; kliknite ''Pogled-Nenatisljivi znaki'', če bi radi videli razliko.
 
V programu Writer lahko '''novo vrstico''' vnesete s kombinacijo tipk Shift+Enter. Znak za novo vrstico je tako vstavljen v besedilo in besedilo, ki sledi, se začne v novi vrstici. To ni enako novemu odstavku; kliknite ''Pogled-Nenatisljivi znaki'', če bi radi videli razliko.
  
Vedenje regularnih izrazov OpenOffice.org pri ujemanju z oznakami za odstavek in novo vrstico je 'nenavadno'. This is partly because regular expressions in other software usually deal with ordinary plain text, medtem ko regularni izrazi OpenOffice.org razdelijo besedilo pri znakih za odstavek. For whatever reason, this is what you can do:
+
Vedenje regularnih izrazov OpenOffice.org pri ujemanju z oznakami za odstavek in novo vrstico je 'nenavadno'. Deloma je vzrok v dejstvu, da regularni izrazi v drugih programih običajno deal z navadnim plain besedilom, medtem ko regularni izrazi OpenOffice.org razdelijo besedilo pri znakih za odstavek. For whatever reason, this is what you can do:
  
* '''\n''' will match a newline (Shift+Enter) if it is entered in the Search box. In this context it is simply treated like a character, and can be replaced by say a '''space''', or nothing. Regularni izraz '''red\n''' se bo ujemal z '''red''', ki mu sledi znak za novo vrstico - and if replaced simply by say '''blue''' the newline will also be replaced. Regularni izraz '''red$''' se bo ujemal z '<b>red</b>', če mu bo sledila nova vrstica. V tem primeru z zamenjavo z '<b>blue</b>' zamenjate le '<b>red</b>' - in pustite prelom vrstice nedotaknjen.
+
* '''\n''' se ujema z novo vrstico (Shift+Enter), če ga vnesete v polje Išči. V tem kontekstu je enostavno obravnavan kot znak in ga je mogoče zamenjati s npr. '''presledkom''' ali z ničemer. Regularni izraz '''res\n''' se bo ujemal z '''res''', ki mu sledi znak za novo vrstico - in če ga enostavno zamenjate z npr. '''laž''', bo zamenjan tudi prelom vrstice. Regularni izraz '''res$''' se bo ujemal z '<b>res</b>', če mu bo sledila nova vrstica. V tem primeru z zamenjavo z '<b>laž</b>' zamenjate le '<b>res</b>' - in pustite prelom vrstice nedotaknjen.
 
* '''red\ngreen''' will match '<b>red</b>' followed by a newline followed by '<b>green</b>'; replacing with say '<b>brown</b>' will remove the newline. However neither '''red.green''' nor '''red.*green''' will match here - the dot '''.''' does not match newline.
 
* '''red\ngreen''' will match '<b>red</b>' followed by a newline followed by '<b>green</b>'; replacing with say '<b>brown</b>' will remove the newline. However neither '''red.green''' nor '''red.*green''' will match here - the dot '''.''' does not match newline.
* '''$''' sam zase se ujema z znakom za odstavek - in ga lahko zamenjate npr. s '<b>presledkom</b>' ali pa z ničemer, če želite spojiti dva odstavka skupaj. Upoštevajte pa, da bo '''red$''' poiskal '<b>red</b>' na koncu odstavka, in če ga zamenjate z npr. '''presledkom''', enostavno dobite '''presledek''' kjer je bil '<b>red</b>' - in odstavki so nedotaknjeni - znak za odstavek se ne zamenja. Morda je bolje, da '''$''' obravnavate ločeno kot posebno skladnjo, unique za OpenOffice.org.
+
* '''$''' sam zase se ujema z znakom za odstavek - in ga lahko zamenjate npr. s '<b>presledkom</b>' ali pa z ničemer, če želite spojiti dva odstavka skupaj. Upoštevajte pa, da bo '''res$''' poiskal '<b>res</b>' na koncu odstavka, in če ga zamenjate z npr. '''presledkom''', enostavno dobite '''presledek''' kjer je bil '<b>res</b>' - in odstavki so nedotaknjeni - znak za odstavek se ne zamenja. Morda je bolje, da '''$''' obravnavate ločeno kot posebno skladnjo, enkratno za OpenOffice.org.
 
* '''^$''' will match an empty paragraph, which can be replaced by say nothing, in order to remove the empty paragraph. Upoštevajte, da '''^red$''' matches a paragraph with only ''''red'''' in it - replacing this with nothing leaves an empty paragraph - the paragraph marks at either end are not replaced. It may help to regard '''^$''' on its own as a special syntax, unique to OOo. Unfortunately, because OOo has taken over this syntax, it seems you cannot use '''^$''' to find empty cells in a table (nor empty Calc cells).
 
* '''^$''' will match an empty paragraph, which can be replaced by say nothing, in order to remove the empty paragraph. Upoštevajte, da '''^red$''' matches a paragraph with only ''''red'''' in it - replacing this with nothing leaves an empty paragraph - the paragraph marks at either end are not replaced. It may help to regard '''^$''' on its own as a special syntax, unique to OOo. Unfortunately, because OOo has taken over this syntax, it seems you cannot use '''^$''' to find empty cells in a table (nor empty Calc cells).
 
* If you wish to replace every newline with a paragraph mark, firstly you will search for '''\n''' with Find All to select the newlines. Then in the Replace box you enter '''\n''', which in the Replace box stands for a paragraph mark; then choose Replace. This is somewhat bizarre, but at least now you know. Note that \r is interpreted as a literal 'r', not a carriage return.
 
* If you wish to replace every newline with a paragraph mark, firstly you will search for '''\n''' with Find All to select the newlines. Then in the Replace box you enter '''\n''', which in the Replace box stands for a paragraph mark; then choose Replace. This is somewhat bizarre, but at least now you know. Note that \r is interpreted as a literal 'r', not a carriage return.

Revision as of 09:41, 19 July 2008


Uvod

Enostavno rečeno so regularni izrazi pameten način iskanja in zamenjevanja besedila (podobno kot 'nadomestni znaki'). Regularni izrazi so lahko tako uporabni kot zapleteni, zato se neizkušeni uporabniki kaj hitro zmotijo. Tukaj je opisana raba regularnih izrazov OpenOffice.org, kar želimo narediti dovolj jasno za začetnike, medtem ko so bolj podrobni vidiki, ki lahko neukega bralca zmedejo, prepuščeni bolj izkušenim uporabnikom.

Tipično uporabljamo regularne izraze za iskanje besedila v dokumentih programa Writer; če želite npr. poiskati vse pojavitve besed gospod ali gospa v svojem dokumentu, bi lahko iskali z regularnim izrazom, ki bi našel pojavitve obeh besed.

Regularni izrazi so zelo pogosti na določenih področjih računanja in jih pogosto imenujejo regex ali regexp (okrajšano za 'regular expression'). Ker niso med seboj povsem enaki, je branje ustreznega priročnika povsem smiselno.

Kje lahko v OpenOffice.org uporabim regularne izraze

V modulu Writer:

  • Uredi - pogovorno okno Najdi in zamenjaj
  • Uredi - Spremembe - ukaz Sprejmi/Zavrni (zavihek Filter)

V modulu Calc:

  • Uredi - pogovorno okno Najdi in zamenjaj
  • Podatki - Filtriraj - Standardni filter oz. Napredni filter
  • Pri določenih funkcijah, kot sta SUMIF in LOOKUP

V modulu Base:

  • ukaz Najdi zapis

Pogovorna okna, ki se pojavijo, če uporabite zgornje ukaze, imajo možnost uporabe regularnih izrazov (ki je privzeto izključena). Primer:

položaj potrditvenega polja za regularne izraze

Vedno, ko odprete to pogovorno okno, preverite stanje možnosti za regularne izraze, saj je privzeto 'izključeno'.

Enostaven primer

Če z regularnimi izrazi nimate izkušenj, jih boste najlažje preučili v modulu Writer, ne pa modulu Calc.

V modulu Writer odprite pogovorno okno Najdi in zamenjaj v meniju Uredi.

V pogovornem oknu izberite Več možnosti in potrdite polje Regularni izrazi.

V polje Search vnesite r.k - pika na tem mestu predstavlja 'poljuben posamezen znak'.

S klikom gumba Najdi vse boste našli vsa mesta, kjer črki r sledi nek drug znak, nato pa še k, npr. 'rik' ali 'burek' ali 'korakali' ali 'moker kamen' (v tem zadnjem primeru r sledi presledek, nato k - presledek šteje kot znak).

Če vnesete xxx v polje Zamenjaj z in kliknete gumb Zamenjaj vse, najdeno spremenite v 'xxx', 'buxxx', 'koxxxali', 'mokexxxamen'

To morda ni preveč uporabno, razloži pa načela delovanja. V nadaljnjih primerih bomo uporabo pogovornega okna Najdi in zamenjaj razložili še podrobneje.

Najmanj, kar morate vedeti o regularnih izrazih

Tudi če vas ne zanima, kako dejansko delujejo regularni izrazi, želite pa le opraviti svoje delo, vam bodo naslednji pogosti primeri v pomoč. Vnesite jih v polje 'Išči' in preverite, da so regularni izrazi potrjeni.

  • krom|Cr najde krom in Cr
  • obl.ka najde obl, kateremu sledi poljuben znak, nato pa ka - npr. obleka, oblika in celo oblXka
  • kr[ae]ma najde krema in krama - [ae] pomeni a ali e
  • spremenjeni? poišče spremenjen in spremenjeni - i je neobvezen, saj mu sledi vprašaj.
  • s\> poišče s na koncu besed.
  • \<. poišče prvo črko besede.
  • ^. poišče prvo črko odstavka.
  • ^$ poišče prazen odstavek.

Kako so regularni izrazi obravnavani v OpenOffice.org

Regularni izrazi OpenOffice.org razbijejo besedilo, po katerem iščemo, na kose in preiščejo vsak kos ločeno.


V modulu Writer se besedilo videti razdeljeno na odstavke. Primer: x.*z se ne ujema z x na koncu odstavka in z z, ki začenja naslednji odstavek ( x.*z pomeni x, nato katerikoli ali noben znak, nato z). Odstavki so obravnavani ločeno (čeprav obravnavamo nekaj posebnih primerov na koncu tega KakOOojčka).


obseg regularnih izrazov


Poleg tega Writer obravnava vsako celico tabele in vsak okvir z besedilom ločeno. Besedilni okviri se pregledajo po tem, ko je bilo pregledano vse besedilo in vse celice tabel na vseh straneh.


V pogovornem oknu Najdi in zamenjaj lahko regularne izraze uporabite v polju Išči. V polju Zamenjaj z jih v splošnem ne smemo uporabljati. Izjeme bomo obravnavali kasneje.

Dejanski znaki

Če vaš regularni izraz vsebuje znake, ki niso 'posebni znaki' . ^ $ * + ? \ [ ( { |, lahko te znake zapišete neposredno.


Primer: res se ujema z res, resnično in kresnik.


OpenOffice.org vam omogoča izbrati, če želite, da je znak 'VELIKA ČRKA' ali 'mala črka'. Če potrdite polje 'Razlikuj med velikimi in malimi črkami' v pogovornem oknu Najdi in zamenjaj, potem se res ne bo ujemal z Res ali KRES; če polja ne označite, bo velikost črke prezrta in bosta oba med zadetki.

Posebni znaki

Posebni znaki so . ^ $ * + ? \ [ ( { |


V regularnih izrazih imajo poseben pomen, kar boste izvedeli kasneje.


Če želite dejansko poiskati enega od teh znakov, postavite predenj levo poševnico '\'.


Primer: če želite najti $100, uporabite \$100 - v tem primeru \$ predstavlja znak $.

Ujemanje posameznega znaka .  ?

Poseben znak pika '.' predstavlja poljuben znak (z izjemo preloma vrstice).


Primer: r.s se ujema z 'res' in 'kres' in 'brisača' in 'ker dišiš'


Poseben znak vprašaj '?' pomeni 'ujemanje z nobenim ali enim od navedenih znakov' - ali 'ujemanje z navedenim znakom, če ga je mogoče najti'.


Primer: kre?ma se ujema z 'krma' in 'krema' - 'e?' pomeni 'ujemanje z enim samim e, če tak obstaja'.


Posebne znake lahko kombinirate med seboj. Pika, ki ji sledi vprašaj, pomeni 'ujemanje z nobenim ali poljubnim posameznim znakom'.


Primer: star.?ing se ujema z 'staring', 'starring', 'starting' in 'starling', ne pa tudi z 'startling'

Ponavljajoče ujemanje + * {m,n}

Poseben znak plus '+' pomeni 'ujemanje z enim ali več navedenih znakov'.


Primer: re+s se ujema z 'res' in 'rees' in 'reeeees' - e+ pomeni ujemanje z enim ali več e-jev.


Posebni znak zvezdica '*' pomeni 'ujemanje z nobenim ali več navedenih znakov'.


Primer: kre*ma se ujema z 'krma' in 'krema' in 'kreeeeeema' - 'e*' pomeni ujemanje z nobenim ali več e-ji.


Pogosta raba '*' je po znaku za piko - t.j. '.*', kar pomeni 'poljuben ali noben znak'.

Primer: kr.*ma se ujema z 'krema' in 'krXma' in 'krYYYYma', ne pa tudi - 'krma' ali 'kreXma'

Zvezdico '*' uporabljajte previdno; zajela bo vse, kar lahko:


Primer: 't.*i' se ujema s 'tri', toda če je v programu Writer vaš odstavek dejansko 'Mladi turški sodnik je upravičeno podelil tri rdeče kartone', se zadetek glasi: 'turški sodnik je upravičeno podelil tri' - t.j. prvi 't' in zadnji možen 'i'. Regularni izrazi so po naravi požrešni.


Z zavitimi oklepaji { } lahko navedete, kolikokrat želite, da se ponovi ujemanje. Primer: a{1,4}h! se ujema z ah!, aah!, aaah! in aaaah! - drugače povedano: enemu do štirim a-jem sledi h!.

Upoštevajte tudi, da se bo a{3}h! ujemal z natanko 3 a-ji, t.j. aaah!, a{2,}h! (z vejico) pa se bo ujemal z najmanj 2 a-ji, npr. aah! in aaaaaaaah!.

Ujemanje položaja ^ $ \< \>

Poseben znak cirkumfleks '^' pomeni 'ujemanje na začetku besedila'.

Poseben znak dolar '$' pomeni 'ujemanje na koncu besedila'.


Zapomnite si, da regularni izrazi OpenOffice.org razdelijo besedilo, po katerem iščete - vsak odstavek v modulu Writer je obravnavan ločeno.

Primer: ^res poišče 'res' na začetku odstavka (res nas ni nič presenetilo).

Primer: res$ poišče 'res' na koncu odstavka (čutil je, da je res)

Primer: ^res$ poišče celico v tabeli, ki vsebuje le 'res'


Poleg tega tudi trdi prelom vrstice (vnesemo ga s Shift+Enter) velja za začetek / konec besedila in dovoljuje ujemanje ^ ali $.


Poseben znak leva poševnica '\' daje poseben pomen parom znakov '\<' in '\>', in sicer 'ujemanje na začetku besede' in 'ujemanje na koncu besede'


Primer: \<res poišče res na začetku besede (bila je bolj resna kot on).

Primer: res\> poišče res na koncu besede (čeprav niso zares kradli.)


Preizkus za določanje začetka/konca besede je pogoj, da je prejšnji/naslednji znak presledek, podčrtaj (_), tabulator, nova vrstica, oznaka odstavka ali katerikoli drug ne alfa numerični znak.

Primer: \<res se ujema z 'oseba@resnica.com'

Primer: res\> se ujema z 'Rekel sem: "Nikoli zares" '

Alternative matches | [...]

The pipe character '|' je poseben znak, ki allows the expression either side of the '|' to match.


Primer: red|blue se ujema z 'red' in 'blue'


Žal nekateri izrazi when used after a pipe niso evaluated. This is so far known to affect ^ in povratne sklice, and is the subject of issue 84828


Primer: ^res|laž poišče odstavke, ki se začenjajo z 'res' in vsakršno pojavitev 'laž', toda laž|^res nepravilno poišče le vse pojavitve 'laž', ne poišče pa odstavkov, ki se začenjajo z 'res'


Znak za oglati oklepaj [ je poseben znak. Znaki, zaobjeti z oglatima oklepajema so obravnavani kot alternatives - katerikoli izmed njih se lahko ujema. Vključite lahko tudi obseg znakov, kot je a-zčšž ali 0-9, namesto da vnesete abcčdefghijklmnopqrsštuvwxyzž ali 0123456789


Primer: r[ei]s se ujema z 'res' in 'ris', ne pa tudi z 'rus'

Primer: [m-p]ut se ujema z 'mut' in 'nut' in 'out' in 'put'

Primer: [hm-p]ut se ujema z 'hut' in 'mut' in 'nut' in 'out' in 'put'


Posebni znaki v okviru alternative match oglatih oklepajev nimajo enakega posebnega pomena. Edini znaki s posebnim pomenom so ], -, ^ in \; ti pomeni so naslednji:

  • ] - oglati zaklepaj zaključi množico alternative match [abcčdef]
  • - - vezaj nakazuje obseg znakov, kot smo že videli, npr. [0-9]
  • ^ - če je cirkumfleks prvi znak v oglatih oklepajih, negira iskanje. Primer: [^a-dxyz] poišče vse znake z izjemo abcdxyz.
  • \ - backslash is used to allow ], -, ^ in \ to be used literally in square brackets, and to allow hexadecimal codes. Primer: \] stands for a literal closing square bracket, so [[\]a] will match an opening square bracket [, a closing square bracket ] ali a. \\ stands for a literal backslash. \x0009 stands for a tab character.

Naj še enkrat poudarimo: to so pomeni teh znakov znotraj oglatih oklepajev, vsi drugi znaki pa so obravnavani literally. Primer: [\t ] poišče 't' ali presledek - ne pa tudi tabulator ali presledek. Če želite poiskati tabulator ali presledek, uporabite [\x0009 ].

Izrazi POSIX v oklepajih [:alpha:] [:digit:] itn.

O slednjih je v skupnosti OpenOffice.org preveč zmede. Tudi sama pomoč je daleč od tega, da bi bila jasna.

V regularnih izrazih OpenOffice.org so na voljo številni 'izrazi POSIX v oklepajih' (včasih poimenovani 'razredi znakov POSIX') v obliki [:classname:], ki dovoljuje ujemanje s poljubnim znakom iz tega razreda. Primer: [:digit:] pomeni števke 0123456789.

Ti se lahko (po definiciji) pojavijo le znotraj oglatih oklepajev of an alternative match - so a valid syntax would be [abc[:digit:]], which should match a, b, c, or any digit 0-9. A correct syntax to match just any one digit would be [[:digit:]].

Unfortunately this does not work as it should! The correct syntax does not work at all, but currently an incorrect syntax ([:digit:]) will actually match a digit, as long as it is outside the square brackets of an alternative match. (To očitno ni zadovoljivo in je tudi predmet zadeve 64368).

Na voljo so spodaj navedeni izrazi POSIX v oklepajih. Upoštevajte, da je natančna definicija vsakega izmed njih odvisna od locale - for example in a different language other characters may be considered 'alphabetic letters' in [:alpha:]. The meanings given here apply generally to English-speaking locales (and do not take into account any Unicode issues).

[:digit:] 
pomeni poljubno števko 0123456789. To je identično 0-9.
[:space:] 
bi moralo pomeniti poljuben whitespace character, vključno s tabulatorjem; vendar je trenutno implementirano tako, da predstavlja le znak za presledek. Upoštevajte, da je trenutno pomoč OpenOffice.org glede tega trenutno misleading. (To je predmet zadeve 41706).
[:print:] 
bi moralo pomeniti poljuben natisljiv znak; however as currently implemented it does not match the single quote nor the double quote characters ‘ ’ “ ” (and some others such as « »). It matches space, but does not match tab (this latter is expected/defined behaviour). (To je predmet zadeve 83290).
[:cntrl:] 
pomeni kontrolni, nadzorni znak. Dokumenti OpenOffice.org imajo s stališča uporabnika zelo malo nadzornih znakov; tabulator (tab) in trdi prelom vrstice (hard_line_break) poiščeta zadetke, znak za odstavek (paragraph_mark) pa ne.
[:alpha:] 
pomeni črko (vključno s črkami z naglasi in strešicami). For example in the phrase (often used in English, and here given with accents as in the original language) 'déjà vu' all 6 letters will match.
[:alnum:] 
pomeni črko, ki ustreza pogoju [:alpha:] ali [:digit:]
[:lower:] 
pomeni malo črko (vključno s črkami z naglasi in strešicami). The case matching does not work unless the Match case box is ticked; if this box is not ticked this expression is equivalent to [:alpha:].
[:upper:] 
pomeni veliko črko (vključno s črkami z naglasi in strešicami). The case matching does not work unless the Match case box is ticked; if this box is not ticked this expression is equivalent to [:alpha:].


There seems to be little consistency in any implementation of POSIX bracket expressions (v OpenOffice.org ali drugod). One approach is simply to use straightforward character classes - namesto [[:digit:]] uporabite npr. [0-9].

Združevanje (...) in povratni sklici \x

Okrogle oklepaje in zaklepaje ( ) uporabljamo za združevanje pogojev.


Primer: red(den)? najde 'red' in 'redden'; tukaj (den)? pomeni 'one or zero of den'.

Primer: (blue|black)bird najde tako 'bluebird' kot 'blackbird'.


Vsaka skupina v oglatih oklepajih je določena tudi kot sklic in se lahko nanjo sklicujete kasneje v istem izrazu z uporabo 'povratnega sklica'. Povratni sklic '\1' pomeni 'whatever matched in the first round brackets'; '\2' stands for 'whatever matched in the second round brackets'; in tako naprej.


Primer: (blue|black) \1bird najde le 'blue bluebird' in 'black blackbird', kajti '\1' stands for either blue ali black, whichever we found. Zato 'black bluebird' does not match.


Upoštevajte, da do različice 2.4 povratne sklice lahko uporabljate le v polju 'Išči', ne pa tudi v polju 'Zamenjaj z'.


Povratni sklici v polju 'Zamenjaj z' so bili implementirani z različico OOo2.4. Za starejše različice obstaja alternativna pot: uporabite Najdi vse, nato neposredno znova uporabite Najdi/Zamenjaj le v trenutnem izboru. S tem lahko (ali pa tudi ne) dosežete želen učinek.

(Tehnična opomba: to obravnava zadeva 15666. Povratni sklici v polju 'Zamenjaj z' so $1, $2, $3 itn. To je skladno s skladnjo v perlu, pa tudi z mehanizmom regularnih izrazov ICU, ki bo morda nekoč zamenjal obstoječi mehanizem regularnih izrazov v OpenOffice.org, s čimer bi razrešili številne težave.)

Tabulatorji, nove vrstice, novi odstavki \t \n $

Par znakov '\t' ima poseben pomen - predstavlja tabulatorski znak.

Primer: \trdeče se bo ujemalo z znakom tabulator, ki mu sledi beseda 'rdeče'.

V programu Writer lahko novo vrstico vnesete s kombinacijo tipk Shift+Enter. Znak za novo vrstico je tako vstavljen v besedilo in besedilo, ki sledi, se začne v novi vrstici. To ni enako novemu odstavku; kliknite Pogled-Nenatisljivi znaki, če bi radi videli razliko.

Vedenje regularnih izrazov OpenOffice.org pri ujemanju z oznakami za odstavek in novo vrstico je 'nenavadno'. Deloma je vzrok v dejstvu, da regularni izrazi v drugih programih običajno deal z navadnim plain besedilom, medtem ko regularni izrazi OpenOffice.org razdelijo besedilo pri znakih za odstavek. For whatever reason, this is what you can do:

  • \n se ujema z novo vrstico (Shift+Enter), če ga vnesete v polje Išči. V tem kontekstu je enostavno obravnavan kot znak in ga je mogoče zamenjati s npr. presledkom ali z ničemer. Regularni izraz res\n se bo ujemal z res, ki mu sledi znak za novo vrstico - in če ga enostavno zamenjate z npr. laž, bo zamenjan tudi prelom vrstice. Regularni izraz res$ se bo ujemal z 'res', če mu bo sledila nova vrstica. V tem primeru z zamenjavo z 'laž' zamenjate le 'res' - in pustite prelom vrstice nedotaknjen.
  • red\ngreen will match 'red' followed by a newline followed by 'green'; replacing with say 'brown' will remove the newline. However neither red.green nor red.*green will match here - the dot . does not match newline.
  • $ sam zase se ujema z znakom za odstavek - in ga lahko zamenjate npr. s 'presledkom' ali pa z ničemer, če želite spojiti dva odstavka skupaj. Upoštevajte pa, da bo res$ poiskal 'res' na koncu odstavka, in če ga zamenjate z npr. presledkom, enostavno dobite presledek kjer je bil 'res' - in odstavki so nedotaknjeni - znak za odstavek se ne zamenja. Morda je bolje, da $ obravnavate ločeno kot posebno skladnjo, enkratno za OpenOffice.org.
  • ^$ will match an empty paragraph, which can be replaced by say nothing, in order to remove the empty paragraph. Upoštevajte, da ^red$ matches a paragraph with only 'red' in it - replacing this with nothing leaves an empty paragraph - the paragraph marks at either end are not replaced. It may help to regard ^$ on its own as a special syntax, unique to OOo. Unfortunately, because OOo has taken over this syntax, it seems you cannot use ^$ to find empty cells in a table (nor empty Calc cells).
  • If you wish to replace every newline with a paragraph mark, firstly you will search for \n with Find All to select the newlines. Then in the Replace box you enter \n, which in the Replace box stands for a paragraph mark; then choose Replace. This is somewhat bizarre, but at least now you know. Note that \r is interpreted as a literal 'r', not a carriage return.

Šestnajstiške kode \xXXXX

Zaporedje znakov, ki se začne z ' \x, ki mu sledi 4-mestno šestnajstiško število', pomeni znak s to kodo.

Primer: \x002A predstavlja znak za zvezdico, '*'.

Šestnajstiške kode lahko vidite v pogovornem oknu 'Vstavi-Poseben znak'.

Polje 'Zamenjaj z' \t \n &

Uporabnike včasih zmede, kaj lahko počnejo s poljem 'Zamenjaj z' v pogovornem oknu Najdi in zamenjaj.

V splošnem regularni izrazi ne delujejo v polju 'Zamenjaj z'. Znaki, ki jih vnesete, dejansko zamenjajo najdeno besedilo.

Trije konstrukti, ki pa vseeno delujejo:

  • \t vstavi tabulator, s katerim zamenja najdeno besedilo.
  • \n vstavi oznako za nov odstavek, s katerim zamenja najdeno besedilo. To je lahko nepričakovano, kajti \n v polju 'Išči' pomeni 'nov odstavek'! V nekaterih operacijskih sistemih je mogoče uporabiti obliko unicode za neposreden vnos znaka za novo vrstico (U+000A) v polje 'Zamenjaj z', kar ponuja rešitev, vendar ta ni univerzalna.
  • & vstavi celotno najdeno besedilo.

Primer: če ste iskali polom|traged, bi našli 'polom' ali 'traged'; če bi zadetke zamenjali z &ija, bi dobili 'polomija' ali 'tragedija'.

Upoštevajte, da povratni sklici ali podzadetki, kot so \1, \2, še niso na voljo v polju 'Zamenjaj z' - oglejte si opombo v zgornjem odseku Združevanje in povratni sklici.

Reševanje težav z regularnimi izrazi v OpenOffice.org

Če regularnih izrazov ne poznate, se zavedajte, da so lahko zelo zviti - če ne dobite pričakovanih rezultatov, preverite, da jih dovolj dobro razumete. Poskusite ohraniti regularne izraze karseda enostavne in nepretenciozne.


Tukaj je nekaj dodatnih zanimivih dejstev o regularnih izrazih OpenOffice.org:

  • Če naletite na nepričakovano vedenje, preverite ustrezen odsek tega kakOOojčka - večina vedenjskih posebnosti je dokumentirana tukaj.
  • Regularni izrazi so 'požrešni' - ujemali se bodo s karseda velikim deležem besedila. Razmislite o uporabi zavitih in oglatih oklepajev in zaklepajev; Primer: [^ ]{1,5}\> poišče 1 do 5 ne-preslednih znakov na koncu besede.
  • Bodite pozorni pri uporabi gumba Zamenjaj vse. Je nekaj redkih primerov, ko ta povzroči nepričakovane rezultate. Če želite npr. odstraniti prvi znak vsakega odstavka, bi lahko v polje 'Išči' vnesli ^., v 'Zamenjaj z' pa nič; s klikom 'Zamenjaj vse' bi pobrisali *celotno* besedilo, ne le prvega znaka vsakega odstavka. O tem razpravlja Zadeva 82473. Druga pot je 'Najdi vse', nato 'Zamenjaj'; morda je najbolj varno, da z regularnimi izrazi sploh ne uporabljate gumba 'Zamenjaj vse'.

Nasveti in triki

Tukaj je nekaj primerov, ki vam morda pridejo prav:

\<([^ ]+)[ ]+\1

najde podvojene besede, ločene s presledki (upoštevajte, da mora biti pred vsakim ] presledek)

\<[1-9][0-9]*\>

najde desetiška števila

\<0[0-7]*\>

najde osmiška števila (z osnovo 8)

\<0x[A-Fa-f0-9]+\>

najde šestnajstiška števila (z osnovo 16)

[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-z]{2,6}

najde večino e-poštnih naslovov (zanje ne obstaja popoln regularni izraz - to je praktična rešitev)

Zunanje povezave

Personal tools
In other languages