今日も元気に残件なす 11

このエントリーをはてなブックマークに追加
438きづね
教えてPerl

http://toro.2ch.net/test/read.cgi/news2/1323135099/933
933 名前:K5 ◆ZrPJFvslEyUG [sage] 投稿日:2012/01/04(水) 02:57:15.93 ID:tK3RmaGW
>>1-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>1-10000000000000000000000000000000000000000000000000000000000000000000000001
1-10000000000000000000000000000000000000000000000000000000000000000000000001
>>1-1000000000000000000000000000000000000000000000000000

なんだが、こんなコードになっている
# >>nnn
$GB->{FORM}->{'MESSAGE'} =~ s/>>([0-9]+)(?![-\d])/<a href="..\/test\/read.cgi\/$GB->{FORM}->{'bbs'}\/$GB->{FORM}->{'key'}\/$1" target="_blank">>>$1<\/a>/g;
# >>nnn-nnn
$GB->{FORM}->{'MESSAGE'} =~ s/>>([0-9]+)\-([0-9]+)/<a href="..\/test\/read.cgi\/$GB->{FORM}->{'bbs'}\/$GB->{FORM}->{'key'}\/$1-$2" target="_blank">>>$1-$2<\/a>/g;

これを >>8000 とかありえない場合は置き換えしないようにするには Perlでどうやって書くの?
439名無しの報告:2012/01/04(水) 03:26:05.15 ID:3WZ6SXti0
>>438
正規表現のみで実現? それともその前にif文入れてもいい?
440きづね:2012/01/04(水) 03:26:55.22 ID:Nvb+CZsA0
目的達成できればなんでもok
441名無しの報告:2012/01/04(水) 03:31:15.03 ID:cLS0F/5NP
正規表現のマッチング負荷が高くならないようにするなら、広めだけど1〜9999に限定して
([0-9]+) を ([0-9]{1,4}) か (\d{1,4}) にするくらいでいいんでないか