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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
271: 04/02/24 21:22 ID:??? AAS
>>270
egrep -iw "^[a-z0-9./]{6,10}"

途方に暮れて質問させていただいた直後に我に返りました。
wというコマンドを使えば出来ました。

スレ汚し失礼しました…。
272
(1): 270 04/02/24 23:35 ID:1VWZCh18(2/2) AAS
スミマセン…もう一度質問させてください…。

外部リンク[html]:koho.ktplan.jp

ここを例にして説明します。
上のサイトを開いて、全部選択してテキストにコピペしてy.txtとして保存。
この中から、6文字以上、10文字以下の英単語だけを抜き取ろうとしています。

$ egrep -iw "^[a-z]{6,10}" y.txt

とすると、
省14
273
(1): 04/02/24 23:40 ID:??? AAS
grepて$つかえたっけ

Perlだと
/^[a-z]{6,10}$/i
で、できるかもしれない。
274: 270 04/02/24 23:46 ID:??? AAS
>>273
即レスありがとうございます…。

$ egrep -iw "^[a-z]{6,10}+$" y.txt

$ egrep "/^[a-z]{6,10}$/i" y.txt

共にだめでした…。
悩んでみます。
275
(1): 04/02/24 23:52 ID:??? AAS
egrep -iw "^[a-z]{6,10}$" y.txt
じゃないのかと。
276: 270 04/02/25 00:11 ID:??? AAS
>>275
あ、スミマセン。。。

egrep -iw "^[a-z]{6,10}$" y.txt

です。
何も起きないのです…。
277
(1): 04/02/25 00:19 ID:??? AAS
正規表現メモによると、egrepでは{n,m}をサポートしていないそうだ。

grepなら{n.m}をサポートしているみたいだが。
278: 270 04/02/25 00:22 ID:??? AAS
>>277
egrepだと、とりあえず>>272の状態まではたどり着くのですが、
$ grep -iw "^[a-z]{6,10}" y.txt
これだと何も起きないのです…。
そもそもgrepやegrepだと無理…なのかな…。
279
(1): 04/02/25 00:42 ID:??? AAS
FreeBSDだけど、こんな感じだよ。

$ egrep -iw "^[a-z]{6,10}$" y.txt
yesterday
yourself
$ egrep -V
egrep (GNU grep) 2.4d
280
(1): 270 04/02/25 01:07 ID:??? AAS
>>279
FreeBSD、ググッテ見ましたが、自分にはよく理解できませんでした。

自分は
外部リンク:sources.redhat.com
このcygwinというのを使用しています。

$ egrep -V
egrep (GNU grep) 2.5

と言うことでした。
つまり、これでは出来ない、ということですかね…。
ありがとうございました。
省4
281
(3): 04/02/25 02:25 ID:??? AAS
>>280
man egrep して、冒頭を 100遍読んでみ。
282: 281 04/02/25 02:28 ID:??? AAS
あ、すまん、何か勘違いしてた。スルーしてくれ。
283
(1): 281 04/02/25 02:33 ID:??? AAS
お詫びといってはナンだが、これでどう?
前の [[:space:]]* は余計かも知れないけど。

$ egrep -iw "^[[:space:]]*[a-z]{6,10}[[:space:]]*$" y.txt
284
(1): 270 04/02/25 02:48 ID:??? AAS
>>283
遅くにスミマセン…調べ調べて、

$ grep "^[a-z0-9./]\{6,10\}" y.txt

これで出来ました…。
本当に出来てるのか、検証していきたいと思います。

$ egrep -iw "^[[:space:]]*[a-z]{6,10}[[:space:]]*$" y.txt

これでも出来ました!まずは…この意味を解読することから勉強して行きたいと思います…。
省2
285: 270 04/02/25 02:50 ID:??? AAS
>>284
訂正!

$ grep -iw "^[a-z0-9./]\{6,10\}" y.txt

でした!

|彡サッ
286
(1): 270 04/02/25 03:34 ID:??? AAS
$ grep "^[a-z0-9./]\{6,10\}" y.txt

$ egrep -iw "^[[:space:]]*[a-z]{6,10}[[:space:]]*$" y.txt

どちらを使っても、y.txtの中の改行をすべて空白に変えてみて、一面単語の海にすると取り出せないですね…。
もう諦めてマジ寝ます。
また明日悩みます。
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;
}
1-
あと 699 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s