Daudzkāršojumi

Last modified by superadmin on 2018-01-12 20:39

Daudzkāršojumi

  • s* - 0 vai vairāk atstarpes
  • s+ - 1 vai vairāk atstarpes
  • s? - 0 vai 1 atstarpe
  • s{3} - tieši 3 atstarpes
  • s{2,4} - 2 līdz 4 atstarpes
  • s{3,} - 3 vai vairāk atstarpes
  • <.*?> - no simbola "<" līdz tuvākajam ">"

    Ņemot vērā to, ka daudzkāršojumu (izņemot fiksētos, piemēram, s{3}) var pielietot mainīgu skaitu reižu, rodas jautājums - cik reižu to pielieto tad, kad ir izvēle. Tas ir īpaši svarīgi tad, ja mūs interesē ne vien atbilde vai strings atbilst regulārai izteiksmei vai nē, bet gan konkrētāks jautājums - cik garš gabals atbilst, un kuru gabalu vajag aizvietot ar citu. Aplūkosim stringu:

<font color="red">viens teksts</font> un <font color="blue">otrs teksts</font>
  1. Iedomāsimies, ka vēlamies izdzēst visus fontu apzīmējumus, t.i. panākt, lai viss teksts būtu nevis krāsains, bet melns. Šajā gadījumā aizstāsim
<font .*?> un </font>
ar tukšo stringu "". Ja neuzmanības dēļ būtu rakstījuši <font .*> (t.i. bez jautājumzīmes aiz zvaigznītes), tad tiktu izdzēsts viss teksts, nevis tikai dažas birkas, jo regulārā izteiksme "apēstu" tekstu no pirmā <font līdz pēdējam >
  1. Iedomāsimies, ka vēlamies izdzēst abus krāsainos teksta fragmentus, kuri atrodas "font" elementos (bet atstāt vārdu "un"). Šajā gadījumā aizstāsim
<font .*?>.*?</font>
ar tukšo stringu. T.i. varam panākt, lai aizstājošā izteiksme apstātos PIRMAJĀ reizē, kad ierauga </font>, nevis aprij visu līdz PĒDĒJAM </font>

Daudzkāršojums * ir maksimāli rijīgs (greedy), bet *? ir minimāli rijīgs.

Tags:
Created by Kalvis Apsītis on 2008-05-03 11:36
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation