[過去ログ] 正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g (989レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
287: 281 04/02/25 04:30 ID:??? AAS
>>286
それこそ、man egrep して、冒頭を 100遍読んでみ。

ていうか、grep でそれやるなら、
逆に、空白をすべて改行に変えてみた方が取り出しやすいと思われ。
288: 04/02/25 14:02 ID:12gYevYJ(1/2) AAS
PERLで
予約語が行にあったら文字で挟んで置き換えるという処理なんですが

$ReplaceStr = $left . $word . $right;
$line =~ s/(\W)$word(\W)/$1$ReplaceStr$2/g;

だと行頭と行末が正しく置換できないです。どうすればいいんでしょうか?
289
(1): 04/02/25 14:32 ID:??? AAS
s/\b$word\b/$left$word$right/g;
290: 04/02/25 17:55 ID:12gYevYJ(2/2) AAS
>>289
ありがとうございます!
こんな便利なキャラクタがあったんですね!
それぞれ予約語の配列にforeachかけてやってたんですが
速度的にはこっちの方が速くなるんでしょうか?

chomp(@ReserveWords);
$MachWords = join("|",@ReserveWords);

foreach $line(@inputlines){
    $line =~ s/\b$MachWords\b/$left$&$right/g;
}
291
(1): 266 04/02/25 20:16 ID:v7alvSdo(1) AAS
古い話で申し訳ないっすけど。

>>269
レスどうもっす。

>Perlなら
>$hoge !~ /^mojiretu/g;
>で、文字列以外にヒットするはず

ん〜、申し訳ない、説明不足した。
正規表現で「mojiretu」が無い事にマッチしたいんですよ。
どうでしょう?
292
(1): 04/02/25 20:19 ID:??? AAS
>>291
外部リンク[htm]:www.din.or.jp
293: 04/02/25 22:58 ID:??? AAS
!~ はマッチしないものが選ばれるはず。
294
(3): 04/02/26 12:30 ID:pqrzwzpG(1) AAS
if($FORM{'comment'} =~ /\@/) { &error; }
とした場合、

@が含まれる文が、エラーになるのは
あたりまえなのですが、

病院 という語句までも制限してしまいます。
shift-jisですけど、文字コードとかが関係しているのでしょうか?
295
(1): 04/02/26 13:27 ID:??? AAS
>>294
外部リンク[htm]:homepage1.nifty.com
296: 294 04/02/26 13:29 ID:??? AAS
調べたところ、
「ァ」や「院」は@と認識されてしまうみたいですね・・・
一度、他の文字に変換してから、
元に戻そうと思います・・・
297: 294 04/02/26 13:37 ID:??? AAS
>>295
ありがとうございます。
勉強します。
298
(1): 04/02/26 16:11 ID:??? AAS
if($word =~ /$search/o){
print $1;
}
という処理をした時に、$search内に正規表現用文字($や^等)が入っていた時
例)
$search = "[abc]"等

に、それを正規表現としてとらえてしまいます。
調べてみたところ、どうやらそれが正しい動作という事でしたが、
この$searchを単なる文字列として見て、例のような文字列の検索を行った時に
「aかbかc」ではなく、「"[abc]"という文字列」として検索するにはどうすれば良いんでしょうか。
299: 04/02/26 16:31 ID:??? AAS
>>298
外部リンク[html]:www.kt.rim.or.jp
外部リンク[html]:www.kt.rim.or.jp

以後、Perl の質問は 2chスレ:php へ。
300
(4): 04/02/27 00:44 ID:28vfJb2l(1) AAS
どっか勘違いしてるのでしょうか?
perlなのですが、
テキストボックスに入れた数値を$in{'count'}に格納して、
それが数字じゃなければエラー出しして終わりにしたいのですが、
数値だろうと、そうでなかろうと、いかのunlessの中を通りません。

 unless ( ($in{'count'} =~ m/^[1-9][0-9]*$/) || ($in{'count'} == 0) ){
  print "Content-type: text/html\n\n";
  print "数字を入れてください。もどってください。";
  exit;
 }
301
(1): 04/02/27 01:04 ID:??? AAS
>>300
こういうことか?

if ("hoge" == 0) { print "ZERO\n" } else { print "NON-ZERO\n" };
302: 300 04/02/27 01:33 ID:??? AAS
>>301
えっと、ごめんなさい、正確に言うと、
「正の整数」を入れてもらいたいので、そうでない場合は、エラーではじきたいのですが。。。
「dhfshfhjksad」みたいな適当な文字を入れてもエラーをすり抜けてしまうし、
「345」みたいちゃんとした「正の整数」を入れても、エラーをすり抜けてくれる。。。
303
(1): 04/02/27 01:46 ID:??? AAS
>>300
数字は $in{'count'} =~ m/^[1-9][0-9]*$/ で真になるから unless
ブロックに入らない。(数字を含まない) 文字列を数値コンテキスト
で評価すると 0 になるので $in{'count'} == 0 で真になるから unless
ブロックに入らない。

以後、Perl の質問は 2chスレ:php へ。
304: 04/02/27 03:08 ID:zgPOAYIB(1) AAS
>>292
感謝!

(?:(?!foo).)*
これかぁ〜、なるほど実験しみます。
305: 300 04/02/27 04:09 ID:??? AAS
>>303

なるほど、よくわかりました。ありがとうございます。
306: 04/02/27 21:31 ID:??? AAS

1-
あと 683 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s