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


482:デフォルトの名無しさん
08/03/07 18:16:02
正規表現関係ないな。脳みそつかえ

483:デフォルトの名無しさん
08/03/07 20:32:03
>>480
s/\.?0+$//

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

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

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

485:デフォルトの名無しさん
08/03/08 10:59:33
東-京/都
とかなってたら終わりだな

486:デフォルトの名無しさん
08/03/08 11:44:11
東京都 市ってなかったっけ?w

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

488:デフォルトの名無しさん
08/03/08 14:42:33
<object> ←これ検索したいんですお願いします

489:デフォルトの名無しさん
08/03/08 17:32:38
/<object>/

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

491:デフォルトの名無しさん
08/03/10 10:41:21
>>490
>>1 を見てその質問の仕方なのかよ!?

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

value

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

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

494:デフォルトの名無しさん
08/03/11 02:03:14
入門 正規表現

サンプルがJavaで吹いた

495:デフォルトの名無しさん
08/03/11 06:12:35
>492
ブラウザのJavaScriptならXPathのほうが速くて正確

496:デフォルトの名無しさん
08/03/11 06:39:06
>>495
ブラウザじゃないです

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

497:デフォルトの名無しさん
08/03/11 06:41:25
>>495
493の正規表現でいいんじゃね?

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

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

500:デフォルトの名無しさん
08/03/12 01:36:32
>>499
ASCIIのコード表でも見てみればいいんじゃないかな

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

502:デフォルトの名無しさん
08/03/12 06:04:10
どこの表にそんなでたらめが書いてあるんだよ

503:499
08/03/12 06:07:45
あ、あれ・・・
もう一回調べてみたらピリオドのほうが先に来てる・・・

504:デフォルトの名無しさん
08/03/12 22:09:17
>>503
あー、すまん、書き間違えてたので修正しといた。

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

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

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

508:デフォルトの名無しさん
08/03/13 02:07:43
こんばんは!
はじめましてよろしくです^^

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

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

509:デフォルトの名無しさん
08/03/13 02:25:18
日本語でおk

510:デフォルトの名無しさん
08/03/13 03:23:27
3回読んだが意味わからん

511:デフォルトの名無しさん
08/03/13 03:30:34
なんとなくわかった気がしたけど最後の1行でぶちこわされた

512:デフォルトの名無しさん
08/03/13 07:22:30
グレッペ

513:デフォルトの名無しさん
08/03/13 07:40:30
こんばんは迄呼んだ。

514:デフォルトの名無しさん
08/03/13 08:09:40
グレッペのあたりで断念した

515:デフォルトの名無しさん
08/03/13 09:04:25
デフォルトのまで読んだ

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

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

517:デフォルトの名無しさん
08/03/13 09:48:33
わろた

518:デフォルトの名無しさん
08/03/13 12:54:59
縦読みだろJK

こはキ11こAよキ

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

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

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

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

520:デフォルトの名無しさん
08/03/13 16:26:58
>>519
ハェ?誰に聞いたんだ?言った奴に質問してこい

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

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

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

524:デフォルトの名無しさん
08/03/13 21:35:50
webprog池

525:デフォルトの名無しさん
08/03/13 21:58:16
>>508
やったな、おい!大漁じゃねーか!

526:デフォルトの名無しさん
08/03/14 07:20:33
なんだい今更になって
本人乙とでも言ってほしいのか?

527:デフォルトの名無しさん
08/03/14 18:46:06
>>523

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

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

530:デフォルトの名無しさん
08/03/14 21:08:49
>>528
まずは>>1を音読したまえ

531:デフォルトの名無しさん
08/03/14 21:09:35
楽.*?ね

532:デフォルトの名無しさん
08/03/14 21:12:11
.*? でした。

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

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

535:デフォルトの名無しさん
08/03/15 10:57:56
>>528
楽[^、]*ね

536:デフォルトの名無しさん
08/03/15 11:05:59
>>535
それが許されるなら
楽しいね
だって許されるはずだ

537:デフォルトの名無しさん
08/03/15 11:47:45
楽しい、ね

538:デフォルトの名無しさん
08/03/15 11:48:14
楽しいかもね楽かもね

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

540:デフォルトの名無しさん
08/03/15 18:53:11
ワード協会とか除外すればいいのどは

541:デフォルトの名無しさん
08/03/15 22:03:46
安楽死ね

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

543:デフォルトの名無しさん
08/03/16 00:59:00
ね.*?$ だと何度言えば

544:デフォルトの名無しさん
08/03/16 01:02:19
>>543
マジで?できないけど??

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

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

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

548:デフォルトの名無しさん
08/03/16 01:21:20
ああ、そうなんだ。

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

550:デフォルトの名無しさん
08/03/16 01:35:49
ね[^ね]*$ じゃないのか?

551:デフォルトの名無しさん
08/03/16 01:50:55
それもう545で提案されてんじゃん。

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

553:492
08/03/16 03:14:37
やはり戻り読みが使えないと難しいですか?

554:デフォルトの名無しさん
08/03/16 03:24:12
戻り読みはいらんだろ

555:デフォルトの名無しさん
08/03/16 06:10:58
Vimで
2008年3月16日 06:09:42

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

556:デフォルトの名無しさん
08/03/16 06:25:49
:%s/年/-/
:%s/月/-/
:%s/日//

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

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

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

558:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/16 07:09:55
しまった。
テスト用に1行のみの置換にしてた。
:.s は :%s に変えてね。
まあ分かると思うけど。

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

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

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

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

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

564:デフォルトの名無しさん
08/03/16 12:03:58
お二人のご教示をヒントにいろいろいじっていたら、以下で、

%s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\1-\2-\3/g

2008年3月16日 06:09:42

2008-3-16 06:09:42

のように、桁数が1桁のままですが、それ以外は置換できました。もう少し試行錯誤してみます。

565:デフォルトの名無しさん
08/03/16 12:29:58
月などを2桁にしたいのなら、ViViだと以下のようにすればいい

:s/(\d{1,4})年(\d{1,2})月(\d{1,2})日 (\d{1,2}):(\d{1,2}):(\d{1,2})/format("%04d-%02d-%02d %02d:%02d:%02d", $1,$2,$3,$4,$5,$6)/e


566:デフォルトの名無しさん
08/03/16 16:54:21
>>560
>>558 は printf コマンドがあることを前提にしてるから
Windows のコマンドプロンプトだと無理なんだろう。
Cygwin でやればいけるはず。

567:デフォルトの名無しさん
08/03/16 17:51:53
>>565さん、ViViを使って、教えていただいた正規表現でできました。
いろいろVimで粘ったのですが自分のスキルでは無理だったので。
ありがとうございました。

>>566さん、ご教示ありがとうございます。
Cygwinはよくわからないのと、>>565さんの方法で出来たので printfコマンドはあきらめました。

>>555の質問の件は>>565さんので解決することができました。
皆さん、いろいろ教えていただきありがとうございました。お世話になりました。

568:デフォルトの名無しさん
08/03/16 19:50:39
あまりの丁寧なレスに
全米が泣いた

569:デフォルトの名無しさん
08/03/18 14:41:31
初心者です、それなりに調べたんですが・・

あああああああ
aaaaaaaaa
??????????
乙乙乙乙乙乙乙乙乙乙乙乙

こういうある文字の繰り返しを、一つの表現でマッチできますか?たとえば10文字以上
専ブラで弾きたいんですが、数字はのぞけると嬉しいです

570:デフォルトの名無しさん
08/03/18 14:44:54
[^\d]{10,}

571:デフォルトの名無しさん
08/03/18 14:45:26
"正規表現 後方参照"でググれ

572:デフォルトの名無しさん
08/03/18 16:39:30
任意の一文字って . ドットのことでおききしたいんですけど
探したい文字の前につけるんですよね?
< を探すのに
.< として検索したら結果は
>< として検索されます
検索結果に > を含めない方法教えて下さい

573:デフォルトの名無しさん
08/03/18 17:00:47
>探したい文字の前につけるんですよね?
新しい解釈だな

574:デフォルトの名無しさん
08/03/18 19:07:48
久しぶりに理解不能なの読んだな
「>」でない任意の1文字 + 「<」
と一致させたいってことなら [^>]<
検索結果から>だけ取り出したいってなら.(>)
後者に何の意味があるのかは知らないけど

ただ少なくとも正規表現について基礎から勉強しなおしたほうがよさそうだな

575:デフォルトの名無しさん
08/03/18 19:15:14
むしろ日本語について基礎から勉強しなおしたほうがよさそうだな

576:デフォルトの名無しさん
08/03/18 19:38:21
最近も508が理解不能だったぞ

577:デフォルトの名無しさん
08/03/18 20:04:03
読み直して 吹いた>>508

578:デフォルトの名無しさん
08/03/18 20:12:36
>>514が秀逸

579:デフォルトの名無しさん
08/03/19 02:36:39
>>577
あれからダブルグレッペというマクロをつかわせていたらきましたよw
一応テストしてから本格的に使わせていただこうと
HDDの奥深くにテスト用のテキスト置いて、 grep開始!
ほへ?
グアッガッガーッ!!うわぁぁああああ!!!
この音は何??
なんだろか!?
ハードディスクが唸りまくってるタラリーン
よくわからないけどドライブごとgrepしてくれたよ
1ファイルで5000行〜1万行が40万ファイルあるのに・・・(ポカーン
コントロール+オルト+デリートでストップかけたら
エディター画面の後ろ側にエラー画面がいくつもでてたww
今時ブラクラ??
驚いたというかワラタwww


580:デフォルトの名無しさん
08/03/19 15:44:41
使用するソフトはProximitronです。

以下のような広告を含む<table>ブロックを丸ごと削除したいと考えています。
<table width=100% class=tbl border=1 cellpadding=5>
<tr bgcolor=#EEEEEE><td height=5px></td></tr>
<tr>
<td align=center>
<iframe id='a5c37d59' name='a5c37d59' src='URLリンク(ads.xxx.com)' framespacing='0' frameborder='no' scrolling='no' width='300' height='250'>
<a href='URLリンク(ads.xxx.com)' target='_blank'>
<img src='URLリンク(ads.xxx.com)' border='0' alt='' /></a>
</iframe>
<script type='text/javascript' src='URLリンク(ads.xxx.com)'></script></td></tr><tr bgcolor=#EEEEEE><td height=5px></td>
</tr>
</table>

一部伏字にして置換してあるので100%同じ文字列ではありません。
これをマッチさせて丸ごと削除したいのです。

<table.*>.*</table>
これだとページ自体が全体的に崩れてしまいます。
tableの開始と終了を合わせないといけないのですが
そこがネックになっています。

581:デフォルトの名無しさん
08/03/19 16:43:48
>>580
正規表現スレだからこんな書き方をするとスレ違いかも知れないけど、
$NEST(<table,[^>]++class=$AV(tbl)[^>]+>*,</table>)

「*」の所を、「*消したい文字を入れる*」とか、すればいいんじゃないかな。

582:デフォルトの名無しさん
08/03/23 02:57:04
拡張子のないファイルに.txt付けたいです
aa1234ファイル

[0-9]
$[\.(txt)]
だめですか?

583:デフォルトの名無しさん
08/03/23 03:02:31
>>582
>>1

584:デフォルトの名無しさん
08/03/23 03:12:15
+ が使えるなら
s/^\([^.]+\)$/\1.txt/
+ が使えないなら
s/^\([^.][^.]*\)$/\1.txt/

585:デフォルトの名無しさん
08/03/23 04:16:02
>>583
了解
>>584
ありがとうございます

586:デフォルトの名無しさん
08/03/23 12:58:56
(Perl5互換)のツールで半角括弧を削除したいんですよろしくお願いします
元の文字列
(10123)test.txt
希望する変換後の文字列
10123test.txt

使ってみたいツールはこれです
ベクター Flexible Renamer
URLリンク(hp.vector.co.jp)

このスレの>>1関連サイトを廻ってみたけどよくわかりませんでした
ツールの作者HPもいって見ましたがQ&Aとか掲示板はなかったです
どなたか括弧の取り除き方教えて下さいお願いします

587:デフォルトの名無しさん
08/03/23 14:28:15
( 削除
) 削除

588:デフォルトの名無しさん
08/03/24 17:03:04
正規表現教えて下さい
<h2>タイトル</2>
「<」から「>」までお願いします(「タイトル」の文字列含む)
どなたかよろしくお願いします

589:デフォルトの名無しさん
08/03/24 17:06:50
>>1

590:デフォルトの名無しさん
08/03/24 17:15:46
>>588です
書き込んでから>>1読みました
今のところ使うソフトは秀丸エディターを試用しようしてみよう思いますが
ツールは何も揃えていない状態なので解答者サンのお勧めのソフトで始めてみます
正規表現でテキストの加工をしたいです
初心者でも挫折しないで継続して使っていけるソフトも一緒に探してます
金額にもよりますがフリー有料問いません
使うソフトはまだ明確には決めていませんので取り合えずシェアーウェアーで試してから
本格的にやってみようと思います
<h2>タイトル</h2>
よろしくお願いします

591:デフォルトの名無しさん
08/03/24 17:18:55
<h2>///ここは<strong>見出し</strong>です///</h2>

こんなのは想定しなくていいのか。

592:デフォルトの名無しさん
08/03/24 17:26:26
>>591サン
即レスありがとうございます
そういうのもあるかもしれないです
文字列の中に <strong>見出し</strong> が入っていれば検索文字列も変わりますよねorz
<h2>からエンドを</h2>にする方法教えて下さい
お願いします


593:デフォルトの名無しさん
08/03/24 17:27:33
途中に改行は?

594:デフォルトの名無しさん
08/03/24 17:53:20
>>593サン
588です
途中に改行は想定していなかったです
あるかもわからないと今気づきました
お手数お掛けして恐縮ですが何卒よろしくお願い致します

595:デフォルトの名無しさん
08/03/24 23:10:25
おまいら、よく>>588の文章で、その意図が判ったな。

596:デフォルトの名無しさん
08/03/24 23:37:54
<h2>///ここは<h2><strong>見出し</strong></h2>です///</h2>

こんなのは想定しなくていいのか。


597:デフォルトの名無しさん
08/03/24 23:43:26
結局、正規表現は入れ子は処理できないのでは

598:デフォルトの名無しさん
08/03/24 23:46:46
<h2> (.*) </2>
\1

<h2> ([.\n]*) </2>
\1

とかでいいのでは?

599:デフォルトの名無しさん
08/03/24 23:47:39
なるほどね
過去スレ読めばよかったorz
>>33まで読んだ

600:デフォルトの名無しさん
08/03/24 23:52:05
>>595がここに張り付いてるようじゃ
このスレで勉強させてもらおうって人も尻込みするね
>>595の意図はそれなんだろうけど・・・

601:デフォルトの名無しさん
08/03/24 23:54:45
ライオンはなんとかって話なわけで
潰しにかかれるうちに潰しちゃう
やな奴だ氏ねばいいよ
9図

602:デフォルトの名無しさん
08/03/24 23:58:48

- - - こ こ へ 何 か 聞 き に 来 た 人 へ - - -

ま ず 過 去 ス レ 読 ん だ ほ う が い い
変 な 潰 し 屋 が い て る よ う な の で ご 注 意 下 さ い


603:デフォルトの名無しさん
08/03/25 00:18:28
質問です。

正規表現だと、〜〜を含む行を探すってのは簡単にできるんだけど
〜〜を含まない行を探すのはどうするのが一般的なのでしょうか?

エディタならば、「abcde」を含む行を
^((.*)abcde(.*))\r\n
で探して、削除することで処理できるのですが、
これはあくまで含む行を探してるのであって、
含まない行を探すというのとは違うような気がして釈然としません。

別に今困ってるわけじゃなくて、知っておきたいだけなのですけど・・・。
よろしくお願いします。

604:デフォルトの名無しさん
08/03/25 00:24:37
うあ、>>473ですでにあった。

605:デフォルトの名無しさん
08/03/25 00:25:12
>>603
言語理論での定義では、正規表現は「ある文字列を含まない文字列」はあらわせない。
しかしそれでは不便なので、パターンマッチ用に拡張された言語では否定を表現する方法を持っている場合はある。

606:デフォルトの名無しさん
08/03/25 02:48:25
sage を含まない文字列

^(?!sage)(.(?!sage))*$

607:デフォルトの名無しさん
08/03/25 03:06:14
>>603
^([^a]|a([^b]|b([^c]|c([^d]|d([^e]|$)|$)|$)|$)|$)*

608:デフォルトの名無しさん
08/03/25 08:13:09
>>603
vi, vim, ViVi なら

:v/regexp/d

で正規表現に一致しない行を削除できる

609:デフォルトの名無しさん
08/03/25 12:28:43
<h2 title="></h2>">みだし</h2>

こんな記述も可能ではある。
結論: HTMLのパースに正規表現は向かない



610:デフォルトの名無しさん
08/03/25 13:40:43
java1.4ですが、

 1234567890 を 1234______ にリプレイスしたいのですが、

どうすればできるでしょうか?

611:デフォルトの名無しさん
08/03/25 13:44:44
"1234567890".replaceAll("[567890]", "_")

612:デフォルトの名無しさん
08/03/25 13:45:35
"1234567890".replaceAll("[5-90]", "_")

613:デフォルトの名無しさん
08/03/25 13:55:11
「違うんです。
 987654 なら 9876__
 314159265358979 なら 3141____________
 にしたいんです」
かな。

614:デフォルトの名無しさん
08/03/25 14:02:37
>>610
自己レスですが、いろんなサイトを見よう見まねで + 気合で何とかできました。


"1234567890".replaceAll( "(^....|).+?(?=.+|$)" , "$1_")



615:デフォルトの名無しさん
08/03/25 20:25:13
「任意の一文字」の.や「前にある文字の1回以上」の+は、bashだとそれぞれ?と*ですが、
正規表現は規格で決まってるものではないんでしょうか?
言語ごとに違いってあるんでしょうか?(bashは言語じゃないってのもありますが・・・)

616:615
08/03/25 20:27:21
「前にある文字の1回以上」の+

↑は違いましたね・・・失礼しました。

617:デフォルトの名無しさん
08/03/25 20:28:54
>bashだとそれぞれ?と*
それ性器表現じゃないし


618:615
08/03/25 20:49:04
>>617
bashのは正規表現とは言わないんですか、失礼しました。そう呼んでるサイトも見かけますが・・・

bashの*に対応するのは.*ですね。
bashスクリプトとperlスクリプトが混ざってると、ちょっと紛らわしいですね

619:デフォルトの名無しさん
08/03/25 22:05:10
bash のは言うならワイルドカードだな。

620:デフォルトの名無しさん
08/03/26 01:49:44
grepとglobの違い。

621:デフォルトの名無しさん
08/03/26 03:33:07
えっ?どう違うの?

622:デフォルトの名無しさん
08/03/27 13:47:15
えっと・・・
VBS (WSH Windows Scripting Host) のRegExp では
マルチラインの指定はできんですか?
ググって必死こいて探してるけど見つけられないんで。

623:デフォルトの名無しさん
08/03/27 14:56:06
かなり前のバージョンでサポートされた

Set ObjRegExp = New RegExp
ObjRegExp.Multiline = True

624:デフォルトの名無しさん
08/03/27 22:10:38
>>623
できました。アリガトです。

625:デフォルトの名無しさん
08/03/29 17:03:54
「ます」「ただいま」
という二つの単語がある場合で
上記2つにはマッチするが
たとえば「まる」という言葉にはマッチしないようにする
正規表現ってどうやればいいですか?

今は「ます」と「ただいま」の2語をマッチするようにしているのですが、
やり方が悪いのか「まる」という言葉でもマッチしてしまいます。

626:デフォルトの名無しさん
08/03/29 17:12:13
>今は「ます」と「ただいま」の2語をマッチするようにしている
具体的にはどうしているの?

627:デフォルトの名無しさん
08/03/29 17:15:05
(ます)|(ただいま)

どう間違えると「まる」にマッチするのか知りたい。

628:625
08/03/29 18:03:22
()なんてあったのか!

解決しました!ありがとうございます。

629:デフォルトの名無しさん
08/03/29 18:12:12
どうやっていて (ます|ただいま) にマッチさせたいのに まる に
マッチしてたのかという謎を解決して欲しいです。

630:デフォルトの名無しさん
08/03/29 18:43:26
>>627
そんな書き方があるとは知らなかった
どの正規表現実装か教えてくれ

631:デフォルトの名無しさん
08/03/29 21:09:51
Firefox2.0.0.13の拡張機能Adblock Plus 0.7.5.3でフィルタを登録しています。
/[\W_]ad(?!=&)(banner|click|conmatch|eeper|flow|frame|ima?ge?|log|serv(er|e)?|stream|type|view|vert(ising|isement)?|trix|xchange|wrapper)?s?[\W\d_]/

これが↓にもヒットしてしまい表示されなくて困ってます。
URLリンク(navi.ekitan.com)
デコードすると、
URLリンク(navi.ekitan.com)大阪府大阪市中央区大阪城1-1&ftell=&sf=10900
よく分らないのですが、"中"の%E4%B8%ADに当たってるようです。

一番よく使ってるフィルタなので消したくないです。
このフィルタで"中"にはヒットしないような正規表現は可能ですか?

632:デフォルトの名無しさん
08/03/29 21:55:14
/[^%A-Za-z0-9]

633:デフォルトの名無しさん
08/03/30 07:49:32
一番外側の開始文字〜終了文字までを
マッチさせるようなのは正規表現でいけません?

開始終了を括弧としたら
"(((1 + 2) * 3) - 4) / 5"
の時
"(((1 + 2) * 3) - 4)"
ここまで取れない?

括弧見づらいからブレイスにするけど
/{([^{}]*|{[^{}]*})*}/
だと2段までしかとれないのは何故?


634:デフォルトの名無しさん
08/03/30 08:00:38
/{([^{}]*|{([^{}]*|{[^{}]*})})*}/

こうすれば3段までマッチさせられるよ。

635:デフォルトの名無しさん
08/03/30 09:04:26
普通に最長一致させてやりゃいいんでないの?
(1+2)*3)-4 みたいな構文が来たら困るけど

636:デフォルトの名無しさん
08/04/03 12:27:53
質問ですperl5.8です

<aaa bbb ccc>
ddddddddddddd<aaa>

検索:<aaa.*?>(.+?)<aaa> で検索したけどマッチしません。どなたかよろしくお願いします

637:デフォルトの名無しさん
08/04/03 13:22:02
>>636
.*? の部分かな。
<aaa[^>]*> でどうだろう。

638:デフォルトの名無しさん
08/04/03 14:20:12
>>636
対象が複数行なんだよね?

$str = "<aaa bbb ccc>\nddddddddddddd<aaa>";
$str =~ s/<aaa.*?>(.+?)<aaa>/$1/s; # 後ろに s つける
print $str;

639:デフォルトの名無しさん
08/04/03 14:22:45
改行のせいだろJK

(?s-:<aaa.*?>(.+?)<aaa>)

640:デフォルトの名無しさん
08/04/03 14:23:10
うわぁ、更新してなかったorz

641:デフォルトの名無しさん
08/04/03 22:23:59
みなさんレスありがとう>>636です
上手くいかないです^^;
もうちょっとガムバッテみます
複数行になると難しいですね
続いた行はできそうな気がするんだけどできないorz

642:デフォルトの名無しさん
08/04/03 22:43:52
while (<FH>) { /pattern/s; # 先生、何もマッチしません }
if (@lines =~ /pattern/s) { # 先生、ここ通りません }

どっちか知らないけど。

643:デフォルトの名無しさん
08/04/04 20:06:53
" 11 11 "
これにマッチあせて"11 11"を取得することはできますか?
「 *([^ ]*[.]*[^ ]*) *」
でやってみたのですがうまく取得できなくて・・・
スペースは全て全角です
お願いします

644:デフォルトの名無しさん
08/04/04 21:22:00
>>643
途中の[.]*でぶっ飛んでる。つーか、. に [ ] つける意味がないよね。

645:デフォルトの名無しさん
08/04/04 21:30:34
>>644
じゃあ教えてあげればいいのに文句書くだけなら解答者じゃない荒らしだ
どっか池

こんな感じか違うかw
".1+.*?"

646:デフォルトの名無しさん
08/04/04 21:35:40
スペースが全角って、もとの文字列がってこと?
あと 11 と 11 は同じ文字?
それなら

+(([^ ]*) +\1) +

かな。全角を認識させたいなら・・・環境によるなぁ。

647:デフォルトの名無しさん
08/04/04 22:01:59
perl5.8です
文字列を3行続けて取得したいのですが教えて下さい

【郵便】100-0001
【住所】東京都○○区○○町1-2-3 もしくは 神奈川県○○市○○町1-2-3○○○○○○○○マンション3階303号室
【電話】03-3000-XXXX

1行目、3行目は行頭にそれぞれ【郵便】【電話】がありますが
2行目の住所部分はマンション名が長かったりすると【住所】はなくて行頭が東京都や神奈川県から始まる行もあります

3行連続で取得する方法教えて下さい

648:デフォルトの名無しさん
08/04/04 22:18:25
【郵便】[.\n]*?【電話】.*

649:デフォルトの名無しさん
08/04/04 22:26:17
>>647
スレリンク(php板:280番) とか
スレリンク(php板:42番) とか
>>636辺りに心当たりはないか。

650:デフォルトの名無しさん
08/04/05 00:02:46
>>646
「○11○5656○」
○は全角スペースです
全角スペースに囲まれた文字列を取得したくて・・・
11とか5656は任意の文字で
間に全角スペースが入っているかもしれないんです
上の文字列だったら「11○5656」
って感じで
わかり難い書き方して申し訳ないです

651:デフォルトの名無しさん
08/04/05 00:10:43
>>650
言語は?

652:デフォルトの名無しさん
08/04/05 00:19:51
○(.*)○
これで抽出できないかな?正規表現始めたばっかでよくわからないけど

653:デフォルトの名無しさん
08/04/05 00:20:47
○*(.*)○*
こうか、すまん

654:デフォルトの名無しさん
08/04/05 00:21:36
基本的に正規表現は最長一致するから >>652 で問題ないんじゃない?

655:デフォルトの名無しさん
08/04/05 00:27:45
test

656:デフォルトの名無しさん
08/04/05 01:28:02
>>650
言語と文字コードがないとあきまへんが、なんとかせーっちゅーなら、

(\xe3\x80\x80|\xa1\xa1|\x81@)(.*)(\xe3\x80\x80|\xa1\xa1|\x81@)

これでいけますわ。utf-8,shift_jis,euc-jpなんでもこいのすぐれものや。

657:デフォルトの名無しさん
08/04/05 01:59:54
どうして正規表現はいつもいつも顔文字に見えてしまうんですか?

658:デフォルトの名無しさん
08/04/05 02:59:24
>>650
「○11○5656○」
これの1個目3個目の空白はマッチさせないんだよね
2個目の空白は実際にはあるかないかわからない
両隣は任意の文字
ん〜これピッタシあわせるのは今の情報だけでは難しいというより不可能じゃないでしょうか
任意の文字が半角だけの構成なら[0-9][a-z]簡単なんだけどなー
何か他にkeyに出来そうなのないですか?

それとここで解答者が自分の環境でよい結果が出てもあなたの環境ではマッチしないかもしれない
環境に合った正規表現の使い方をしないとマッチさせれない場合がありますよ
質問者も解答者も徒労に終わるので
あなたが正規表現をどのように使うのか記載したほうがいいよ
正規表現を扱おうとする言語もしくは正規表現を扱えるエディターで検索しようとしているのか
あなたを攻めてるわけではないので誤解しないようにね

659:デフォルトの名無しさん
08/04/05 03:16:49
>>650
[^\x81@].*[^\x81@]

660:デフォルトの名無しさん
08/04/05 08:53:44
>>653
ああ、そうか。そうだな。

661:650
08/04/05 12:28:26
すみません戻りました
皆様レスありがとうございます
「○11○5656○」
○は全角スペース、何個あるかわからないし、ないかもしれません
「一三○四○○○」だったら「一三○四」
「○○○○八九4○○た」だったら「八九4○○た」
こんな感じで取得したいです
他の文字は任意です。全角の場合が多いですが
言語はJava、コードはUnicodeかな?
簡単に言うと両端の全角スペースをトリムしたいだけなのですが・・・
わかり難い表現ですみません

662:デフォルトの名無しさん
08/04/05 12:35:01
先頭の全角スペースを除去、末尾の全角スペースを除去
という処理にしたほうが簡単だよ

非欲張りなのが使えればこうかな
/ *(.*?) *$/

663:デフォルトの名無しさん
08/04/05 12:50:55
/^□*([^□]+(□+[^□]+)*)□*$/

664:デフォルトの名無しさん
08/04/07 03:05:23
gawk3.16です
2行に渡る文字列を検索でマッチさせたいです
<title(.+?)\n.*title>
秀丸(正規表現ON)ではマッチしていたのですがgawkではマッチしません
アドバイス頂けましたら幸いです
どうぞよろしくお願い致します

665:デフォルトの名無しさん
08/04/07 03:14:35
mオプション可能な処理系を使うか、事前に加工しとくか。

666:デフォルトの名無しさん
08/04/07 04:08:57
>>665さん
mオプション
マルチラインですね
実はgawkのスクリピトを教えていただいたのです
とても気に入り今後末永く使わせていただこうと思うのですが
複数行の検索が秀丸と違うようなので戸惑っています
他にgawkのアドバイスありましたらよろしくお願いします

667:デフォルトの名無しさん
08/04/07 06:08:38
>666
相変わらず具体的じゃないのね。
665をやったがこういう風にうまくいかなかったとか
こうしたけどダメだったとかあれば、アドバイスのしようもありますが、
他にアドバイスと言われてもなかなか。

668:デフォルトの名無しさん
08/04/07 08:58:29
>>666
ない物は仕方ない。
mオプションの正規表現を組み込んだawkを自前で作る?
perlとか、正規表現が拡張されてる処理系に移った方が、後々幸せ。

669:デフォルトの名無しさん
08/04/07 13:26:21
gawk3.16で複数行にまたがる文字列をマッチさせたいです
エイチティティピー://www.kt.rim.or.jp/~kbk/gawk/gawk_5.html#SEC28
上記アドレスのページに「複数行レコード」と記述がありました
>変数FS に "\n"という文字列をセットすれば良い。
> (これは、改行にマッチする単純な正規表現である)
わかる方おられましたら教えて下さい

やってみたこと
gawk.exe "FS = \n 検索文字列 プリントアウト"入力ファイル>出力ファイル
エラー:^バックスラッシュが行最後の文字になっていません

gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル^
エラー:More?

gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル/
ファイル名、ディレクトリ名 またはボリュームラベルの構文が間違っています

PS:
666です
>>667さん
>>668さん
レスありがとうです


670:デフォルトの名無しさん
08/04/07 13:57:34
>>669
気付け。gawkじゃ無理。
FSはフィールドセパレータ。用途が全然違う。

671:デフォルトの名無しさん
08/04/07 14:00:36
そういうのはどうしてもawkでやりたければtrで改行文字を置換してからawkで処理して戻すとかやるからなぁ。
awkだけじゃなくて、基本的な知識が足りなすぎるよ。

672:デフォルトの名無しさん
08/04/07 14:04:12
>>669です
>>670さん
>>671さん
gawkは諦めた方がよいかもしれないですね
私じゃ無理だということはわかりました
アドバイスありがとうございました^^;

673:デフォルトの名無しさん
08/04/07 16:01:44
<element attribute>マルチラインを
キャプチャしたいんです</element>

このお題はまだ続くのかな。

> perl5.8です
> gawk3.16です
次は何だろ。

674:デフォルトの名無しさん
08/04/08 00:07:32
>>673
残念でした
秀丸
perl
gawk
ですよw

秀丸でもう少しのところまでいけたんだけど
データが長すぎて最後のソートが出来なかったんだ
それでエクセルとかでやろうとしたんだけど
文字化けで遠回りした
正規表現扱えないんだってわかるのに1週間かかったw
んで改めてやってるんよ
データ形式をちょっと変えて保存するだけなんだけど
こんなに難しいとは思わなかった
秀丸スレの人たちとUWSCスレの人たちのお陰で
ここまでなんとか前進できた
いつも「もう少しだっ」って思っていたところへたどり着くまでに
思いもよらぬ壁が現れるんだ
この正規表現もそうだね
私は正規表現って生まれて始めて知ったんだ
またお願いしますね
オヤシミ^^


675:デフォルトの名無しさん
08/04/08 03:18:20
>>674
Excelでも正規表現使えるよ。
CreateObject で正規表現オブジェクトを使えるようにすればね。

つか、Perlでできなかったてーのはなんでだ?


676:デフォルトの名無しさん
08/04/08 03:25:58
>>675
perlで出来そうなんだけど私が作れないだけ^^;
オヤシミノシ

677:デフォルトの名無しさん
08/04/08 05:15:30
>>676
正規表現使うならperlじゃなくてもいいが何かプログラミング言語もやっといたほうが自由度はあがると思うけどな。
perlは何するにしても過去の遺産のおかげで楽ができるから趣味でやる分にはお勧め。

678:デフォルトの名無しさん
08/04/08 14:44:33
いくつかのスレで見かけたけど、大本のやりたいことは何なの?
ウェブページをテキストで取り込んでデータベース可?
なんだかやりたいことの過程で部分部分でこのソフトでこうするのはどうしたらいいか
とういう質問でよく分からない。

紙copi/紙copi lite/Kamicopi/ネタの種 12
スレリンク(software板)
あたりのソフトを使えば良いんじゃないか?とか思っちゃうんですが、見当違いだったらごめんね。

679:デフォルトの名無しさん
08/04/08 18:46:44
>>678
紙コピ持ってるよ
最初はスゲーとか思ってシェア払って正規ユーザーなったけど
加工で正規表現検索できないので役に立たない
ビジネスバージョンも抽選で当たったけど
もう使ってないよ

やりたいことは何十回も書いてるよ
ここで書くのもなんなんだけど
既存のファイルからタイトルとデータ1箇所を抽出して一覧表作りたいだけ

<ol>
<li><a href="ファイル名">タイトル</a></li>
<li>データ</li>
</li>予備項目(空欄)</li>
</ol>

この前ファイル名とタイトルの部分を作ってくれた方が居たんだけど
その下にデータ項目と予備項目を作らなければいけないことがわかって
もっかい頼んだら後でコロコロ変わるってことで断られた
それで自分でやってるわけ^^;

680:デフォルトの名無しさん
08/04/08 22:33:34
素朴な疑問だが、「シェア払って」ってなに?

681:デフォルトの名無しさん
08/04/08 23:15:19
「シェア払って」ですか
「お金払って」ですね


682:デフォルトの名無しさん
08/04/09 11:27:48
シェアウェアにシェアフィーをシェア、って早口言葉みたいだ。

683:デフォルトの名無しさん
08/04/11 01:20:21
Wiki(pedia)って感じだな。

684:デフォルトの名無しさん
08/04/11 10:39:52
詳説 正規表現 第3版の訳本がやっと出るっぽいな
原書あるから要らんけど…

685:デフォルトの名無しさん
08/04/11 18:59:29
Perl5.8.2です。
「あかスまのた゚」「゙ナをフaき」のように、
規則性のない全角かな・カナ、半角かな・カナ(濁点半濁点含む)をマッチさせたいのですが
例えば上の例ですとどのようなパターンで記述すればいいでしょうか?
文字コードは何でも構いませんが、可能ならeuc-jpが良いです。
よろしくお願いします。

686:デフォルトの名無しさん
08/04/11 19:16:59
半角英字が混じってるように見えるが、
それは排除しなくていいのか?

Ruby なら EUC にして 0x00 〜 0x7F を排除すればいいだけだと思うが、
規則性の有無のチェックが必要とかなると正規表現では難しいかと。

687:デフォルトの名無しさん
08/04/11 19:20:26
あ、全角英字や漢字も除くというか、
本当に仮名のみにするのか。
仮名の範囲の端同士で [ヲ-゚ぁ-んァ-ミム-ヶ] みたいにすればいいと思うよ。
Ruby なら文字コード指定できるから、EUC でそうやればいい。

688:デフォルトの名無しさん
08/04/11 20:59:19
どうだい本当にそういうことか?
文字化けしてる領域をまるっと抽出したいってことだと思うんだが
もしそうなら>>306みたいに先読み使えばどうにかなると思う

689:デフォルトの名無しさん
08/04/12 00:19:19
URLリンク(www.oreilly.co.jp)
第3版が出るようだけど,PHPイラネなら買うほどでもないのかな

690:デフォルトの名無しさん
08/04/12 01:42:47
性器にperlを埋め込みたいんですが、腕のいいクリニックをご存知ありませんか?

691:デフォルトの名無しさん
08/04/12 02:36:34
埋め込むなら、perlではなくpearlをどうぞ。

692:デフォルトの名無しさん
08/04/12 05:25:33
さすがにRuby埋め込んでくれるところはないんでしょうか?

693:デフォルトの名無しさん
08/04/12 08:45:46
ないね
Pythonなら最初から生えてるのにね

694:デフォルトの名無しさん
08/04/12 10:20:33
朝になるとEiffelです。

695:デフォルトの名無しさん
08/04/12 19:18:06
35の春。はじめての C 。


696:デフォルトの名無しさん
08/04/12 22:01:15
haskell! haskell!


697:デフォルトの名無しさん
08/04/13 14:15:30
正規表現でパスワードのような文字列にマッチさせることは可能でしょうか?
条件
・英字(大文字か小文字)と数字を必ず含む
・英字のみはマッチしない
・数字のみもマッチしない

^\w+$
はもちろん駄目で
^[a-zA-Z\d]+$
ももちろん駄目でした・・・

698:デフォルトの名無しさん
08/04/13 15:36:33
これでどうですか?
(\w+(\d*\w*)*|\d+(\w*\d*)*)

_と-の扱いは?

699:デフォルトの名無しさん
08/04/13 17:01:14
> _と-の扱いは?

ああ、それもいるのか・・

700:デフォルトの名無しさん
08/04/13 17:07:31
先読み使える言語なら、それで一発では?

701:デフォルトの名無しさん
08/04/13 17:26:35
\d+(\d|\w|[-_])*\w+(\d|\w|[-_])*|\w+(\w|\d|[-_])*\d+(\d|\w|[-_])*|[-_](\d|\w|[-_])*\w+(\d|\w|[-_])*


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5384日前に更新/160 KB
担当:undef