Regulární výrazy

HackForum

Regulární výrazy#
AHoj,

vytvořil jsem si RV, ten má za úkol vytvořit v textu odstavce za pomoci fce preg replace. trochu to komplikuje ovšem tag <pre> který chci zachovat.

rv na odstavce:
(?<=\r\n\r\n)([^<>]+?)(?=\r\n\r\n)

rv_na pre:
(?<=<pre>)(.+?)(?=\<\/pre>)

příkladový text

"
První odstavec rozmanitého textu každému k nahlédnutí.

Druhý odstavec kopírující text odstavce prvního.


[-pre-]
olalá
tramtadá

oláláá
pu pum pipi

pu pum pipi
olalááááááá
[-/pre-]

"

Jak z regulárních výrazů vyplývá vytvoří se odstavce z první a druhé věty. To je okay.

U pre však nastává problém, protože tam nejsou žádné z tagů přípustné. Rv pro odstavce je však navržený tak, že se orientuje podle netisknutelných znaků \r\n\r\n a tak najde schodu i v textu uzavřeném v pre konkrétně přesně ve středu který pro rv budí dojem odstavce.

Otázka zní, jak donutit onen první RV pro odstavce, aby tag pre přeskakoval?

(V tento okamžik mi mě napadá pouze takové řešení, že bych u převodu tagu pre nechal prolézt text a nahradil v něm všechny tagy p zpět znaky \r\n. )

Díky za odpověd.

----------
[link]

[link]

Někdy kokot kokotem není, někdy je to prostě jenom pták.
(odpovědět)
qteck | E-mail | Website | ICQ 36425086920.12.2011 12:01
re: Regulární výrazy#
Jenom jsem to prolitnul, ale kdyz uz pouzivas lookahead a lookbehind, proc nepouzit i negativni?

napr.:(?<=\r\n\r\n)(?<!\[-pre-\])([^&
lt;>]+?)(?!\[-/pre-\])(?=\r\n\r\n)

Presny tvar si uprav sam. Netestoval jsem, snad to bude fungovat.
(odpovědět)
kolemjdouci21.12.2011 20:44

Zpět
 
 
 

 
BBCode