[Namazu-devel-ja 153] Re: HEAD の filter/msword.pl で停止

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2004年 9月 12日 (日) 13:43:33 JST


寺西です。

Tadamasa Teranishi wrote:
> 
> > # div name shoud be removed.
> > $$cont =~ s!(<div(?:\s[A-Z]+\w*(?:=(?:".*?"|'.*?'|[^\s>]*))?)*)\s+name=
> > (?:".*?"|'.*?'|[^\s>]*)(\s[A-Z]+\w*(?:=(?:".*?"|'.*?'|[^\s>]*))?\s*>)!$1$2!igs;
> > にかかったところで止まったままになりました。
...
> ".*?" を "[^"]*" に、'.*?' を '[^']*' に書き換えれば、問題ないよう
> です。

"....\"..." といったパターンでも、ある程度対応するために、
".*?" のような最小マッチを使用しているのですが、(きちんと確認して
いませんが) Perl 5.6 より前の環境では、マッチングに非常に時間が
かかるようです。(Perl 5.6 以降の環境では問題ないみたいです。)

そのため、".*?" を "(?:\\"|[^"])*" に、'.*?' を '(?:\\'|[^'])*' に
書き換えて commit しました。こちらの方がより正しいはず。

# ソースの可読性はかなり落ちますが...。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内