[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/10 20:54 / Filesize : 212 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現



1 名前:正規表現 mailto:正規表現 [02/12/06 18:09.net]
正規表現

381 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/06 21:09.net]
>>376
いわゆるeof

382 名前:名無しさん@お腹いっぱい。 [04/02/06 22:38.net]
EOF符号をsedで消去できますか?


383 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/21 22:59.net]
grep で使える正規表現を精密に解説したサイトはありますかね?
日本語/英語どっちでもいいのですが。

384 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 00:19.net]
www.kt.rim.or.jp/~kbk/regex/regex.html

385 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 00:29.net]
レベル低いなー
378に対して出来るとも出来ないとも言えないのか...


386 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 00:58.net]
378=381 ですか?

387 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 02:14.net]
>>378
できるよ。普通に
s/^Z//
とかすればいい。もちろん^ZはEOFの一文字ね。

こんなの試せばすぐわかるだろと思ってたんだが、よく>>376を読むと、
「正規表現は純なテキストであるべきで特殊記号を混ぜるのはイクナイ」
と感じたんだろうな。まあ気持ちはわかるわ。

最近の正規表現拡張では、文字をコードの数値で表現する文法が
入ってたりする方が普通(例えばperlとか)だもんな。

388 名前:338 mailto:sage [04/02/22 02:24.net]
でね、特殊記号の特別なケースがtab。大昔は\tなんて表現なかったさ。
よく画面上の見た目やハードコピーや雑誌からシェルスクリプトを打ち直して、
tabとspaceの違いで動かないなんてことが時々あったんだよ。

あと勝手にシェルスクリプトを整形されて動かなくなるとか。


389 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 02:52.net]
>>382
いいえ
>>383
ありがトン!




390 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 02:55.net]
>>382
381=385 が正解


391 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 16:53.net]
>>380
ブックマークにいれますた。

392 名前:名無しさん@お腹いっぱい。 [04/03/27 17:05.net]
[\\w$'-]
これはどういうことなのでしょう?
[\w$'-]
ならわかるのですが..

393 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/27 17:09.net]
>>388
処理系は何?

394 名前:名無しさん@お腹いっぱい。 [04/03/27 17:20.net]
>>389
Rubyです
Regexp::compile("\b\d[\d\.]+\d\b|[\w]+|[\\w$'-]+")
scanメソッドで英文を分割してます

395 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/27 17:22.net]
>>390
ほほう。バグってる悪寒。

396 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/27 17:25.net]
Regexp::compile("\\b\\d[\\d\\.,]+\\d\\b")
こんなのがあるんですが..

397 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/27 18:30.net]
>>392
Ruby で "..." の中で '\' を書くときは、'\' でエスケープする必要があるの。
つまり Regexp::compile("\\w") は /\w/ と同じ。

>>390 のだと '\' のエスケープが足りない部分があるように見える。
たとえば、 "\w" は "w" に、 "\b" は "\010" になっちゃう。
ので「バグってる悪寒」と言いました。

398 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/27 18:53.net]
>>393
なるほど、必死に\\と重ねる正規表現について調べてましたよ
ありがとう


399 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/30 01:42.net]
perl で質問です。

NOTE note "note" notes

上のような文字列を「book」だけを「note」に置換したいのですが
s/\bnote\b/book/g
のようにすると、ダブルクォートで囲まれているものも置換されてしまうのですが
それを

NOTE book "note" notes

のようにするにはどう表記すればよいのでしょうか?
詳しい方、教えてください。




400 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/30 04:15.net]
>>395
> NOTE note "note" notes
>
> 上のような文字列を「book」だけを「note」に置換したいのですが

401 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/30 10:07.net]
>>396
その下の
s/\bnote\b/book/g
ぐらい読んで多目にみてやれ。

>>395
とはいえ、仕様があいまいすぎ。
'note' はどうする? :note: は? "abc note def" は?

402 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/30 10:29.net]
s/ note / book /g
か?

>>397
> とはいえ、仕様があいまいすぎ。
んだな。

403 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/30 12:34.net]
>>395
s/(?=[^"])\bnote\b(?=[^"])/book/g;

# こんなんで良いわけないよなと思いつつ・・・

404 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/31 02:02.net]
>>397

> とはいえ、仕様があいまいすぎ。

すいません、おっしゃるとおりです。
ある単語(note)をある単語(book)に置換したいのですが、
ダブルクォートで囲まれているもの("note")は、その置換からは除外したいのです。

> 'note' はどうする? :note: は? "abc note def" は?

したがいまして、これらはとりあえず想定外で構わないので置換してしまっても構いません。
もう少し昨日の例を詳しく書きますと

NOTE,note"note"notes-note

このようなものでも

NOTE,book"note"notes-book

のようになってくれるのを期待しています。

ただ、"abc note def" これも想定外で構わないのですが
対応が可能であるのなら、私の勉強の為に教えてくださるとありがたく思います。

>>399
ありがとうございます。

>s/(?=[^"])\bnote\b(?=[^"])/book/g;
これを試してみました。
基本的にOKかなと思ったのですが、行頭、行末では置換の対象となってくれませんでした。



405 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/31 02:52.net]
>>400
補足です。
ここでいう単語とは \w+ で表せる範囲のもので、
アルファベット大文字、小文字も含めて完全に単語の
先頭から末尾までが一致するものです。


406 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/31 07:45.net]
もっと簡単にできるかもしれないけど、
s/(^|(?<=[^\w"]))note\b|\bnote($|(?=[^\w"]))/book/g;
とかは?

> ただ、"abc note def" これも想定外で構わないのですが

後ろから数えた"の個数が奇数ならマッチしないようにして、
$b =~ s/\bnote\b(?=([^"]*"[^"]*")*[^"]*$)/book/g;
とすれば、"のマッチングが保証できる範囲ではなんとかなるかも。
前からの"の個数でマッチさせようとしたら、
可変長のlook-behindは実装してないらしい。(perl 5.8)


407 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/31 14:53.net]
s/"note"/hogehoge/g
s/note/book/g
s/hogehoge/"note"/g
おれならこうしちゃうな。
考えんのめんどい。

408 名前:名無しさん@お腹いっぱい。 mailto:sage [04/04/01 01:10.net]
>>402

ありがとうございました。
たいへん勉強になりました。


409 名前:名無しさん@お腹いっぱい。 [04/04/07 15:07.net]
質問させてください。

&にはマッチして欲しいのですが、&にはマッチして欲しくないのです。

どのように記述すればよいのでしょう。

お願いします。



410 名前:405 [04/04/07 15:09.net]
&にはマッチ
&amp;にはマッチしない

でした。すいません。

411 名前:名無しさん@お腹いっぱい。 mailto:sage [04/04/07 15:26.net]
>>405
Perl5 でいい?

412 名前:名無しさん@お腹いっぱい。 mailto:sage [04/04/07 15:32.net]
>>405
/&(?!amp;)/

413 名前:名無しさん@お腹いっぱい。 mailto:sage [04/04/11 13:22.net]
正規表現のおすすめ書って何がありますか?

414 名前:名無しさん@お腹いっぱい。 mailto:sage [04/04/11 14:13.net]
オライリーのやつ。

415 名前:名無しさん@そうだ選挙に行こう [04/07/11 16:49.net]
ワイルドカード(DOS)の *.txt って、正規表現だとどう書くの?

416 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/11 20:35.net]
{(([0-9a-zA-Z]){0,})\.txt}とか半端に返してみるテスト

417 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/11 20:46.net]
[^\\/]+\.[Tt][Xx][Tx]\z とか (ry

418 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/11 22:41.net]
foo と bar 両方含む行をマッチさせたいんだけど、
awkでいうところの and演算子
% awk /foo/&&/bar/
が使える、windowsで動くgrepツールなんか教えてください。

#絞込み再検索のないGUIなgrepツールなんかイラネ

419 名前:名無しさん@お腹いっぱい。 [04/07/11 23:39.net]
>>412,413
. 記号は \ でエスケープになるのですね。.*\.txt でマッチはしました。
助かりました、ありがとうです。



420 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/12 22:46.net]
>>414

FIND "foo" | FIND "bar"

みたいのじゃ駄目?

421 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/14 00:51.net]
>>414
|が使えるツールなら、/foo.*bar|bar.*foo/とかで近似できるんじゃないの。
CygwinのGNU grepで試してみた。

> cat foobar.txt
foo
bar
foo foo
foo bar
bar bar
bar foo
> grep -n "foo.*bar\|bar.*foo" foobar.txt
4:foo bar
6:bar foo
>

422 名前:414 mailto:sage [04/07/23 03:17.net]
なるほど、andをorに展開すればいいのか。
しかし fooかつbarかつbazを検索、つーばあい展開すんのめんどくさいなぁ。

windowsのGUIなgrepツールは、サブフォルダも検索、とかできて
結構便利なのも歩けど、パイプとかorが使えなかったりしてイマイチ。

結局cygwinでawk使ってるけど、これもいまひとつメンドクサイ。
2chのログを検索してるだけなんだが_| ̄|○

423 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/29 01:12.net]
>>418
xyzzy の ggrep 辺りがいいんじゃない?

424 名前:名無しさん@お腹いっぱい。 [04/07/30 00:18.net]
Windows の AWKじゃだめですか?

425 名前:名無しさん@お腹いっぱい。 [04/08/03 09:48.net]
Perloしかないべ


426 名前:名無しさん@お腹いっぱい。 [04/08/06 22:51.net]
#から行末までをあらわす正規表現ってどうやればいいんでしょうか。

427 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/06 23:22.net]
#.*$

428 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/12 15:32.net]
#[^#]*$

429 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 00:25.net]
質問があります。

サクラエディタ(正規表現ライブラリ:BREGEXP.DLL)でCソース中のhogehogeをgrepしてた
場合に、コメント化(//)されている行だけは検索結果に表示したくないんですが、
どのような正規表現で検索すればいいでしょうか?




430 名前:名無しさん@お腹いっぱい。 [04/08/24 01:48.net]
あげ

431 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 01:56.net]
>>425
そのエディタよく知らないんだけど、Unix で動くの?

432 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 13:36.net]
スレタイだけ見て、板を確認してないんだと思われ。

433 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 13:43.net]
それを言うと、このスレ自体板違いな気もしなくはないが。ム板のだけで十分やん。

434 名前:425 [04/08/24 21:24.net]
UNIX板って知っていて質問をしましたが。
とりあえず、ム板に逝ってみます。

435 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 21:38.net]
>>430
Unix 用のソフトなの?

436 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/24 22:51.net]
>>431
is not UNIX

437 名前:名無しさん@お腹いっぱい。 [04/08/24 23:41.net]
多分エディタの種類はどうでもよくて、 /\/\*.*\*\/ とか、そんな答えを期待していたと思われ


438 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/05 06:33.net]
ム板の正規表現もとんと書き込みないから、テストしてみたら
書き込めた。ここもどうなんだか、書き込んでみる。

439 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/06 18:18.net]
ハハ*.*ハハ



440 名前:名無しさん@お腹いっぱい。 [04/09/07 16:51.net]
指定文字列A 何か 指定文字列B
という何かにヒットさせるにはどういう正規表現にすればいいですか?

441 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 17:18.net]
>>436
素で答えると「文字列A.*文字列B」だけど?そういう話?

もちろん文字列ABに特殊記号があったらどうするかとか、
.*は最長マッチでいいのとか、いろいろ細かい話はあるけど。

442 名前:436 [04/09/07 17:21.net]
自分で、
(文字列A).*{2,15}(文字列B)
とかでやってみたんですが、
マッチするのが、
指定文字列A 何か 指定文字列B
がマッチしてしまうので…

何か の部分だけを抽出しようと思ってます。

443 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 17:55.net]
後から取り出したい部分を()で囲む。(.*{2,15})みたいに。

444 名前:436 [04/09/08 01:37.net]
>>439さんの方法でも結果が変わりませんでした… 処理系が違うからかな?

とりあえず諦めて、
指定文字列A 何か 指定文字列B
をマッチさせて、指定文字列A+1文字目から 何か の文字数だけ切り取ることにします。

ありがとうございました。

445 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/08 02:28.net]
>>440
で、その処理系が何かを晒すつもりは毛頭無いわけですね?

446 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/08 10:13.net]
>>441
ハゲには無理

447 名前:436 mailto:sage [04/09/08 11:58.net]
何度もすいません。

C#です… 改めてやってみると>>439さんの方法でいけました。
group[1]に入ってたんですね。全体しか見てませんでした。

板違いにお騒がせしました。

448 名前:名無しさん@お腹いっぱい。 [04/09/10 00:33.net]
Perlの場合、

$_ = "いっぱい";
s/い/お/;          # おっぱい
s/い/お/g;         # おっぱお

ということでおk?

449 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 02:41.net]
  _  ∩
( ゚∀゚)彡 おっぱい!おっぱお!
 ⊂彡




450 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 15:00:12.net]
小学生のころ流行ったネタ

451 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/27 06:28:21.net]
性器表現

452 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/27 09:23:16.net]
ワロテモータ

453 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/27 11:29:59.net]
さんざん概出なのに・・・

454 名前: mailto:sage [04/10/13 14:29:29.net]



455 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/13 14:50:43.net]
.*

456 名前:ウサチャソ mailto:sage bill@microsoft.com [04/10/29 21:49:31.net]
↑アナルは性器じゃねーよな、とか思ってよく見ると、ドット米。
イボ痔か?

457 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/30 20:30:37.net]
>>452
拭き忘れたウンチだよ。きっと!

458 名前:名無しさん@お腹いっぱい。 [04/11/10 15:37:24.net]
regexp

459 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 21:14:34.net]
rege*p



460 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/16 23:14:21.net]
正規表現で複数の単語の中に「/」があるときにヒットさせたいんですが

echo "hoge / hoge" | grep "\</\>"

でだめでした・・。だれか修正をお願いしますorz


461 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/16 23:50:35.net]
>>456
条件をもっと明確に定義しろ。
マルチすんな。

462 名前:456 mailto:sage [04/12/17 00:16:01.net]
>>457

複数の単語の中で、"/"のみで構成される単語が存在する場合のみ
ヒットさせたいのです

つまり
a b c / d
上記ようなときで下記のどの事象にもヒットさせたくはないのです
// /a a/ a/a



463 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/17 01:22:18.net]
>>456
pc5.2ch.net/test/read.cgi/linux/1101654885/957
とこっちと、どっちで続けるのかね。

464 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/17 11:17:13.net]
まことに勝手ながらこちらで続けさせてください
質問を改めます
やりたいことは
-----------------------
1) echo "/" | grep ......
2) echo "/ a b" | grep ......
3) echo "a b /" | grep ......
4) echo "/a / b/" | grep ......
-----------------------
上ですべてマッチさせて
以下はすべてはじくようにしたいのです
-----------------------
5) echo "//" | grep ......
6) echo "// /// ////" | grep ......
7) echo "/a b/ /c/" | grep ......
-----------------------
上と下の違いは、前後にスペースを含む" / "が存在するか否かです

よって以下のように考えましたが、ヒットしませんでした
echo "a / b"|grep "\</\>"
echo "a / b"|grep "\<\/\>"

どなたか修正をおねがいしますorz


465 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/17 11:22:35.net]
>>460
grep と言ってもいろいろあるんだが
どの OS のどの grep よ。

466 名前:456 mailto:sage [04/12/17 11:23:16.net]
↑修正します

修正前)上と下の違いは、前後にスペースを含む" / "が存在するか否かです

修正後)上と下の違いは、単語 / が存在するか否かです

467 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/17 11:27:31.net]
>>460
> 上と下の違いは、前後にスペースを含む" / "が存在するか否かです
1) と 2) には存在しないようだが。

468 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/17 11:28:10.net]
>>462
「単語」とは?

469 名前:名無しさん@お腹いっぱい。 [04/12/18 00:00:37.net]
ブラケットの中でピリオドを入れる時ってメタキャラクタとして扱われますか?

[\w.]

[\w\.]
が同じ動きにになるみたいなんですけど・・・。

ちなみに、パールです。




470 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/18 02:48:16.net]
>>465
「みたい」じゃなくてテストコードで示してよ。

471 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/18 08:58:34.net]
どの言語の正規表現がどんな有限オートマトン使ってるという情報って
どこかにありますかねぇ。正規表現コンバータ作ろうかと思ってるのですが。。

NFA、DFAの違いぐらいは詳説正規表現の本でわかるのですが、実装ともなると。
オートマトンの変換に関してはコンパイラの本を参考にしてますが、
やはりかなりつらいものがありますね。たんに字句解析して作った方がいいのかなぁ。

472 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/18 09:16:42.net]
普通にNFA+DFAでいいじゃん

473 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/21 02:13:26.net]
オブジェクト指向正規表現の仕様策定はまだですか?

474 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/21 14:44:45.net]
>>469
聞いたことないな。
何それ?

475 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/21 19:26:19.net]
>>469
まかせた。

476 名前:名無しさん@お腹いっぱい。 [04/12/22 19:35:55.net]
お前らWinの.NETなんだが正規表現の質問をさせてくれ。

RegularExpressions.Regexで下の文字列を検索して<TD>から</TD>に分けたい。

string strHtml = "<TD>a</TD><TD>b</TD><TD>c</TD>"

Regex regex = Regex("<TD>.*</TD>");
MatchCollection matchcollection = regex.Matches(strHtml);

だと最長一致で "<TD>a</TD><TD>b</TD><TD>c</TD>"の1つのコレクション取得。

Regex regex = Regex("<TD>.*?</TD>");

だとやりたい "<TD>a</TD>", "<TD>b</TD>","<TD>c</TD>"の3つのコレクションが取得できる。

.*? の意味をアフォにも分かるように説明してくれ。
.*(任意の0文字以上)が?(あるかないか)だろ。
なんで思った通りに3つのコレクションが取得できるの?

477 名前:472 [04/12/22 19:38:29.net]
*? つーのは最短一致という便利なキーワードなのか。
つまらん質問失礼しますた。

478 名前:名無しさん@お腹いっぱい。 [05/01/07 22:21:40.net]
下がってるので、どれ一つ、とんちでも。
rubyでは
/aa+??/ =~ "a" => 0
emacsでは
"aa+??" =~ "a" => nil
さて、こうなってしまうのは、各々がどのようなオートマトンで
解釈されているからでしょうか。

479 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/08 07:36:53.net]
emacsって最短マッチあんの?



480 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/08 11:15:48.net]
ありましゅよー
ttp://www.cs.huji.ac.il/support/emacs/elisp-help/elisp-manref/elisp_34.html

でも、{m,n}? の最短マッチはないみたい…。

481 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/11 11:11:46.net]
最短マッチに対応した grep ってある?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<212KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef