Вопросец по рехулярке

Навичёк
Дата: 09.06.2006 18:33:08
  select regexp_replace('Title=Vladimir, db=Pietrovich, gb=Petrov ',
  'Vladimir([^g]*).*','\1') 
  from dual
REGEXP_REPLACE('TITLE=V
-----------------------
Title=, db=Pietrovich,
Почему
Title= вошло в результирующий набор?
Denis Popov
Дата: 09.06.2006 18:38:28
По-моему потому, что изменяется только найденный кусок, все остальное идет как есть. Если бы ты сказал, к примеру:
select regexp_replace(
         'Title=Vladimir, db=Pietrovich, gb=Petrov ', '(.*)Vladimir([^g]*).*','\2'
       )
from dual;
То по шаблону нашлось бы все, и осталось бы только требуемое.
dmidek
Дата: 09.06.2006 18:39:27
Навичёк
  select regexp_replace('Title=Vladimir, db=Pietrovich, gb=Petrov ',
  'Vladimir([^g]*).*','\1') 
  from dual
REGEXP_REPLACE('TITLE=V
-----------------------
Title=, db=Pietrovich,
Почему
Title= вошло в результирующий набор?


ИМХО.
Вы заменяете Vladimir, db=Pietrovich, gb=Petrov на db=Pietrovich,
а Title= не рассматривался...
Навичёк
Дата: 09.06.2006 18:41:16
dmidek
Навичёк
  select regexp_replace('Title=Vladimir, db=Pietrovich, gb=Petrov ',
  'Vladimir([^g]*).*','\1') 
  from dual
REGEXP_REPLACE('TITLE=V
-----------------------
Title=, db=Pietrovich,
Почему
Title= вошло в результирующий набор?


ИМХО.
Вы заменяете Vladimir, db=Pietrovich, gb=Petrov на db=Pietrovich,
а Title= не рассматривался...


Скорее вы правы надо вначале .* указывать
Навичёк
Дата: 09.06.2006 19:32:01
Почему не работает даже такое условие (я упростил, мне надо между option значение):
select
regexp_replace(pcomment_big, '.*Information([^<]*).*', '\1')
from s
where length(to_char(pcomment_big))>0 
and rownum<2


REGEXP_REPLACE(PCOMMENT_BIG,'.*INFORMATION([^<]*).*','\1')
--------------------------------------------------------------------------------

<p class="notifyUs"><a href="javascript:uuPopup();">Broken Link?        Newer Version?
Tell us!</a></p>
<h2 class="relInfoHdr">Information Related to Version: <select name="vid" onchan
ge="jumpTo(this);" class="relInfoSel"><option value="/dyn/moreinfo/palm/7466&
;vid=294402&mode=info" selected="selected">1.62b</option><option value="/dyn
/moreinfo/palm/7466&vid=289651&mode=info">1.62a (2006-05-11)</option><op
tion value="/dyn/moreinfo/
dmidek
Дата: 09.06.2006 20:02:09
Навичёк
Почему не работает даже такое условие (я упростил, мне надо между option значение):
select
regexp_replace(pcomment_big, '.*Information([^<]*).*', '\1')
from s
where length(to_char(pcomment_big))>0 
and rownum<2


REGEXP_REPLACE(PCOMMENT_BIG,'.*INFORMATION([^<]*).*','\1')
--------------------------------------------------------------------------------

<p class="notifyUs"><a href="javascript:uuPopup();">Broken Link?        Newer Version?
Tell us!</a></p>
<h2 class="relInfoHdr">Information Related to Version: <select name="vid" onchan
ge="jumpTo(this);" class="relInfoSel"><option value="/dyn/moreinfo/palm/7466&
;vid=294402&mode=info" selected="selected">1.62b</option><option value="/dyn
/moreinfo/palm/7466&vid=289651&mode=info">1.62a (2006-05-11)</option><op
tion value="/dyn/moreinfo/

У меня впечатление, что у Вас строка разбивается на несколько символами переноса

select regexp_replace('..........' , -- Ваша строка, "вытянутая в одну" 
'.*Information([^<]*)(.*)', '\1')
from dual
Related to Version
Навичёк
Дата: 09.06.2006 20:36:44
К сожалению уже не смогу проверить, но судя по формату вывода в sqlplus имхо один перенос после </p>, который не должен влиять на результат
SY
Дата: 09.06.2006 21:08:18
Навичёк
К сожалению уже не смогу проверить, но судя по формату вывода в sqlplus имхо один перенос после </p>, который не должен влиять на результат


Obviously, it will влиять на результат. By default period (.) does not match the newline character! You must use n as match parameter:

SQL> SELECT regexp_replace('<p class="notifyUs"><a href="javascript:uuPopup();">Broken Link?        
Newer Version?Tell us!</a></p>' || CHR(10) || (13) || '<h2 class="relInfoHdr">Information Related to
 Version:<select name="vid" onchange="jumpTo(this);" class="relInfoSel"><option value="/dyn/moreinfo
/palm/7466&;vid=294402&mode=info" selected="selected">1.62b</option><option value="/dyn/moreinfo/pal
m/7466&vid=289651&mode=info">1.62a (2006-05-11)</option><option value="/dyn/moreinfo/','.*Informatio
n([^<]*).*', '\1')
  2   from dual
  3  /

REGEXP_REPLACE('<PCLASS="NOTIFYUS"><AHREF="JAVASCRIPT:UUPOPUP();">BROKENLINK?NEW
--------------------------------------------------------------------------------
<p class="notifyUs"><a href="javascript:uuPopup();">Broken Link?        Newer Ve
rsion?Tell us!</a></p>
 Related to Version:


SQL> SELECT regexp_replace('<p class="notifyUs"><a href="javascript:uuPopup();">Broken Link?        
Newer Version?Tell us!</a></p>' || CHR(10) || (13) || '<h2 class="relInfoHdr">Information Related to
 Version:<select name="vid" onchange="jumpTo(this);" class="relInfoSel"><option value="/dyn/moreinfo
/palm/7466&;vid=294402&mode=info" selected="selected">1.62b</option><option value="/dyn/moreinfo/pal
m/7466&vid=289651&mode=info">1.62a (2006-05-11)</option><option value="/dyn/moreinfo/','.*Informatio
n([^<]*).*', '\1',1,1,'n')
  2   from dual
  3  /

REGEXP_REPLACE('<PCL
--------------------
 Related to Version:

SQL> 

SY.