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


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

正規表現 part4



1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ]
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

463 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:24:13 ]
めんどくさがりなので俺なら↓でやってしまうな
/^(あああ.*?)(.{7})$/\1abcd/

464 名前:447 [2008/02/21(木) 18:24:17 ]
>>463
ありがとうございます

いろいろ調べながらやってますがダメなようです
もうちょっとがんばってみます

465 名前:デフォルトの名無しさん [2008/02/21(木) 18:30:35 ]
せっかくヒントもらえたんだし、頑張ってもらわんとな

466 名前:デフォルトの名無しさん [2008/02/22(金) 00:06:24 ]
>>396
いまラッパーつくってるよ
ちょっとまてて

467 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:22:33 ]
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円

468 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 16:48:39 ]
おや、和訳出るのね。今回は田和さんじゃないんだ
もったいない気もするがロングテールの人なら鉄板か

469 名前:466 [2008/02/22(金) 21:49:08 ]
できましたよ 使ってみてください サポートはここで
fx10.web.fc2.com/index.html

470 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:35:41 ]
>>468
原書では追加はPHP関連とかがあったけど、以前のものからの改訂部分って
ほとんどなかったんだよね。
訳しなおしてるのかなあ?



471 名前:デフォルトの名無しさん [2008/02/23(土) 20:12:38 ]
php4なのですが、
<img src="new.gif" alt="New" width="10">
を正規表現で置換してaltの値だけを表示にすることは出来ませんでしょうか

よろしくお願いします



472 名前:デフォルトの名無しさん [2008/02/23(土) 20:21:04 ]
<img src=\".*?\" alt=\"(.*?)\".*?>
\1
でできたよ

473 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:28:49 ]
秀丸で検索するときに文字列Aを含んで且つ文字列Bを含まない行全体を指定したいのですが、
(含む行)       ^.*文字列A.*\n
(含まれない行)   ^((?!文字列B).)*\n
で個別にはわかるんですがこの2つを合わせてて検索したいのですがどう書けばいいのでしょうか?

474 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:21:55 ]
(^.*文字列A.*\n|^((?!文字列B).)*\n)

475 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:22:43 ]
あ、間違えたわ

476 名前:デフォルトの名無しさん [2008/03/06(木) 01:07:25 ]
  dll
| ^
  dll

477 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:06:30 ]
微妙にイケメソがいるな

478 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:12:32 ]


479 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:35:28 ]
(6
  ’)
(6


480 名前:デフォルトの名無しさん [2008/03/07(金) 17:01:30 ]
質問です。
小数点以下の右端の0を全部取り除きたいです。
小数点以下が0しかない場合は、小数点も含めて取り除きたいです。

3.00 → 3
3.02000 → 0.02

どう書けばよいでしょうか?
sprintf("%g", num) とすればいけるかと思いましたが、numが19120730.0000の場合に
1.91207e+07となり、使えませんでした。
perl5.8です。宜しくお願いします。



481 名前:デフォルトの名無しさん [2008/03/07(金) 17:04:54 ]
      ____
      // ̄ ̄`|
     /|断 だ |
     / |る が |
    /イ \___|
    / |// /| |
   /_\ /_/_レ|
   ∧o>/ イ≡三\|
  /ミ// r-<彡/|
  / /彡 ヾ\_O> |
 /iハ-イ)   ̄ヽ彡|
`/ i∧二    // |
/ (`ーv\  // /|
`<j`ーヾ_ゝ // (r|
  `<  ノ  /リ|
    `<  //7|
      `</ / |
        `<|




482 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:16:02 ]
正規表現関係ないな。脳みそつかえ

483 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:32:03 ]
>>480
s/\.?0+$//

484 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:40:12 ]
約2万件のデータがあるのですが
使用する文字が半角全角交じりで途中に記号やスペースもあるかもなのです
文字数もわかりません
2つのキーワードで全部取れますか?

キーワード@東京都
キーワードA3-5-7

何区何町だったか思い出せません><
何故か357って数字だけ覚えてました^^

485 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:59:33 ]
東-京/都
とかなってたら終わりだな

486 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:44:11 ]
東京都 市ってなかったっけ?w

487 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:23:42 ]
東京都.*?[33三].+?[55五].+?[99九]
で抽出してあとは手動かなぁ、俺がやるなら
漢数字が入る地名とかいちいちはじいてられないし

488 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:42:33 ]
<object> ←これ検索したいんですお願いします

489 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:32:38 ]
/<object>/

490 名前:デフォルトの名無しさん [2008/03/09(日) 01:17:00 ]
>>1
みたいにアンカー機能を付けたいのですがどのように書けば良いのでしょうか?

491 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:41:21 ]
>>490
>>1 を見てその質問の仕方なのかよ!?



492 名前:デフォルトの名無しさん [2008/03/10(月) 21:13:30 ]
<hoge aaa="aa\"bb<cc>dd" zzz="ee\"ff<gg>hh">value</hoge>

value

と置換する正規表現を教えて下さい
言語は JavaScript で、戻り読みは使えません

493 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:23:42 ]
正規表現よく分かりません><
<[^/]+>([^<]+)</.+>

494 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:03:14 ]
入門 正規表現

サンプルがJavaで吹いた

495 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:12:35 ]
>492
ブラウザのJavaScriptならXPathのほうが速くて正確

496 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:39:06 ]
>>495
ブラウザじゃないです

取得したページからタグを削除することを目的としています

497 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:41:25 ]
>>495
493の正規表現でいいんじゃね?

498 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 08:57:13 ]
秀丸ではスペースは直打ちがデフォですか?
何か気持ち悪い。

499 名前:デフォルトの名無しさん [2008/03/12(水) 01:26:27 ]
Perlの正規表現で[^\.-z]っていうのがあったんですけどこれってどういう文字が当てはまるんですか?

500 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:36:32 ]
>>499
ASCIIのコード表でも見てみればいいんじゃないかな

501 名前:デフォルトの名無しさん [2008/03/12(水) 06:02:36 ]
>>500
見てみたけどピリオドのほうがzより後に来てるのでこれおかしいんじゃないのと思って質問したのですが・・・



502 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 06:04:10 ]
どこの表にそんなでたらめが書いてあるんだよ

503 名前:499 [2008/03/12(水) 06:07:45 ]
あ、あれ・・・
もう一回調べてみたらピリオドのほうが先に来てる・・・

504 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:09:17 ]
>>503
あー、すまん、書き間違えてたので修正しといた。

505 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:16:00 ]
ってのは冗談として、
そういう ASCII コード表の順に大きく依存するような範囲指定を書くのは良くないと思う。
バグってハマったときに ASCII コードを凝視しないと解決いけなくなるし、移植性も低くなる。
アルファベットと記号は分けて書くようにするとか、文字クラスなどを利用した方が良い。

506 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:26:03 ]
>>505
言うことは非常によくわかる。
文字クラスを使うべきっていうのには完全に同意。
でもASCIIコード順は移植性十分にある気がする。
とりあえず俺はASCIIコードで範囲指定するのは問題ないと思う。

507 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:49:22 ]
個人的には
OSの事情とかLOCALEまわりのランタイムの完成度とか
POSIX文字クラスは警戒心をくすぐるものだw

508 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:07:43 ]
こんばんは!
はじめましてよろしくです^^

キーワード@とキーワードAを同時にグレッペ出来る機能のあるツールはありますか
1000ファイル単位で処理したいんですが
1ファイルに@AA(Aは同じものが連続である)
これを行ごとgrepしたいんです
Aについては1つ削除がいいです
よろしくお願い致します

キーワード@東京都 キーワードA性別A(性別マーク)

509 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:25:18 ]
日本語でおk

510 名前:デフォルトの名無しさん [2008/03/13(木) 03:23:27 ]
3回読んだが意味わからん

511 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 03:30:34 ]
なんとなくわかった気がしたけど最後の1行でぶちこわされた



512 名前:デフォルトの名無しさん [2008/03/13(木) 07:22:30 ]
グレッペ

513 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 07:40:30 ]
こんばんは迄呼んだ。

514 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 08:09:40 ]
グレッペのあたりで断念した

515 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:04:25 ]
デフォルトのまで読んだ

516 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:11:02 ]
1ファイルに3つのキーワードが先頭から
 都道府県名
 性別
 性別を表す何らかのマーク
の順番で並んでいて、
2つめと3つめは同じ性別を意味する別表現である。
例えば2つめが「男」だったら、3つめは「♂」となる。
これをgrepしたいが、性別については一つ消したい。

こんな感じか?
grepだけじゃ無理だからsedかawk使え、でおk?

517 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:48:33 ]
わろた

518 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:54:59 ]
縦読みだろJK

こはキ11こAよキ

ここで、前半部分の"こはキ11こ"というのは、
個数は11個じゃないよ、というのを表している。
個は、!=11個、というわけだな。
後半部分の"Aよキ"というのは、
2個でもねーよ、というのを表している。
(2個 !=)という逆ポーランド記法を使っているようだ。

つまり、個数は11個でも2個でもないということだったんだよ!!!
Ω ΩΩ<な、なんだってー!!!

519 名前:デフォルトの名無しさん [2008/03/13(木) 16:15:05 ]
Perlで>>1のようにアンカー機能をつけるためには正規表現を学べばいいと聞きました

if ($FORM{'text'} =~/>>$d/)
こんな感じでアンカーを抜き出すのは合ってるのでしょうか?
そのあと$DATA[$d]てきなのを取り出すにはどうしたらいいのでしょうか?

520 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:26:58 ]
>>519
ハェ?誰に聞いたんだ?言った奴に質問してこい

521 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 20:34:26 ]
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
思いついたやつを貼ってみる
こんなんだっけ?perlうろ覚えだわ



522 名前:デフォルトの名無しさん [2008/03/13(木) 21:25:39 ]
>>521
うまくリンクされません。。
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
↑これは桁数が1〜4ならマッチということですよね
リンクされないのはなぜでしょうか?

523 名前:デフォルトの名無しさん [2008/03/13(木) 21:30:52 ]
すいません
自己解決しました
$val =~ s/</</g;
$val =~ s/>/>/g;
これでタグを無効にしていました
それで>>521さんの通りにやるとアンカー自体はマッチします
この後それを取り出すのはどのようにすればいいのでしょうか?
ログからデータを取得するのはわかりますが、実際にその取り出された部分だけを抽出して表示するやり方がいまいちわかりません

524 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:35:50 ]
webprog池

525 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:58:16 ]
>>508
やったな、おい!大漁じゃねーか!

526 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:20:33 ]
なんだい今更になって
本人乙とでも言ってほしいのか?

527 名前:デフォルトの名無しさん [2008/03/14(金) 18:46:06 ]
>>523

528 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:06:23 ]
「楽しいかもね、そうかもね」っていう文字列で
「楽.*ね」ってやると、.*は可能な限りマッチするから
「楽しいかもね、そうかもね」まで拾っちゃうでしょ?
それを「楽しいかもね」でマッチさせたい場合どうすればいいですか?

529 名前:デフォルトの名無しさん [2008/03/14(金) 21:08:42 ]
*?って?をつければ非欲張り型(なるべく短くマッチ)になるかも知れない

530 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:08:49 ]
>>528
まずは>>1を音読したまえ

531 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:09:35 ]
楽.*?ね



532 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:12:11 ]
.*? でした。

533 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:19:58 ]
60文字程のURLなんだけど
真ん中あたりの15文字くらいがわかんなくなりました
正規表現でなんとかなりませんか?

534 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:27:42 ]
その15文字の前か後ろの長いほうで検索すればいいだろ…

535 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 10:57:56 ]
>>528
楽[^、]*ね

536 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:05:59 ]
>>535
それが許されるなら
楽しいね
だって許されるはずだ

537 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:47:45 ]
楽しい、ね

538 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:48:14 ]
楽しいかもね楽かもね

539 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:28:52 ]
>>535
だったら
 楽[^ね]*ね
でもいい様な。

540 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:53:11 ]
ワード協会とか除外すればいいのどは

541 名前:デフォルトの名無しさん [2008/03/15(土) 22:03:46 ]
安楽死ね



542 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 00:57:08 ]
「楽しいかもね、そうかもねABC」っていう文字列で
「ね.*$」ってやると
「ね、そうかもねABC」まで拾っちゃうでしょ?
それを最後の「ねABC」でマッチさせたい場合どうすればいいですか?

543 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:59:00 ]
ね.*?$ だと何度言えば

544 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:02:19 ]
>>543
マジで?できないけど??

545 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:04:58 ]
[^ね]を使うとか、いろいろやりようはある

546 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:08:49 ]
>>544
最短一致に対応してないタイプの正規表現なのかな。

547 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:16:55 ]
>>543,546
その目的には、最短一致は使えないから。
照合開始位置を後ろにずらしてまで最短を見つけるわけではない。

548 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:21:20 ]
ああ、そうなんだ。

549 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:34:22 ]
さあ、この問題を解決できる神はいるのだろうかっ!!(ただ答えが欲しいだけ)

550 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:35:49 ]
ね[^ね]*$ じゃないのか?

551 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:50:55 ]
それもう545で提案されてんじゃん。



552 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 02:24:31 ]
>>550
THX!ひとまずそれで省いた後
ね$をマッチさせることにするよ

553 名前:492 mailto:sage [2008/03/16(日) 03:14:37 ]
やはり戻り読みが使えないと難しいですか?

554 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 03:24:12 ]
戻り読みはいらんだろ

555 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:10:58 ]
Vimで
2008年3月16日 06:09:42

2008-03-16 06:09:42
のように年月を-で、日を削除するように置換するにはどうしたらいですかね?

556 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:25:49 ]
:%s/年/-/
:%s/月/-/
:%s/日//

じゃあかんのんか?
というか、3 を 03 に変える所までやりたいの?

557 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:31:06 ]
>>556
説明不足ですみません、対象のテキストには日付以外にもいろいろ書かれていて、
年や月などの単語はそのままに日付部分だけ置換したいのです。
日付の正規表現が理解できていないので、こちらでお尋ねした次第です。

>というか、3 を 03 に変える所までやりたいの?
可能ならしたいです。

558 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:04:36 ]
とりあえずこれでいけた。

:.s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\=system("printf '%04d-%02d-%02d' " . submatch(1) . " " . submatch(2) . " " . submatch(3))/

559 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:09:55 ]
しまった。
テスト用に1行のみの置換にしてた。
:.s は :%s に変えてね。
まあ分かると思うけど。

560 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:45:51 ]
>>558さん、ありがとうございます。
やってみたのですが、うまくいかず、日付の部分が丸ごと消えてしまうようです。

'printf' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出ました。こちらのVimの設定が悪いのでしょうか?もう少し試してまたレス返しにきます。

561 名前:>>555=>>557 mailto:sage [2008/03/16(日) 08:05:26 ]
何度か試したのですが、同じ結果です。
一応こちらの手順ですが、スレに貼って頂いたものをクリップボードに入れてから、
:<C-R>*
で貼り付けして、先頭を :%s/ に変えてテキスト全体に適用してから、実行しました。ほぼコピペなので打ち間違いはないと思うのですが。
Vim7 を Windows 2000 sp4 で使ってます。
printf などもわからないため、もう少し調べてみます。



562 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:10:00 ]
>>555
ViVi でだけど以下でいけた
:s/(\d{4})年(\d{1,2})月(\d{1,2})日 (\d{2}):(\d{2}):(\d{2})/\1-\2-\3 \4:\5:\6

Vim でも同じように出来るんじゃないか?

563 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:45:32 ]
>>562さん、やってみましたが無理でした。
マッチはうまくいってるみたいですが、置換の仕方がVimとだいぶ違うようです。
ViViはいじったことないので、少し調べてみます、スペース入れる辺りがよくわかりませんので。
わざわざありがとうございました。皆さん、お手数おかけしております。






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

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

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