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


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

正規表現 Part5



1 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:07:28 ]
正規表現(Regular Expression)スレです。

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

前スレ
正規表現 Part4
pc11.2ch.net/test/read.cgi/tech/1186030400/

655 名前:デフォルトの名無しさん [2009/02/04(水) 19:03:45 ]
お願いします( ゚ω゚ ) 言語はC#を用いています。

正規表現にて
 [ok] 100
 [ng] 01 → 1
 [ok] 0.001
 [ng] 00 → 0
 [ok] 0.1000

前ゼロ入力をReplaceで""に置き換えたいのですが、正規表現が上手く書けませぬ
教えてくださいエロい人

656 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:29:16 ]
関口宏「ベジータさん、今までいろいろな敵と戦ってきましたね?」

ベジータ「ふん、ゴミに興味などない」

関口、リーダー『ゴミに興味などない』

ベジータ「な……なんだ貴様ら!?」

リーダー「そんなベジータさんにはこんな問題!」

関口宏「ベジータさんが戦った、ギニュー特選隊のメンバー、五人全員お答え下さいスタート!」

リーダー「走って!まだよまだよまだよどうぞ!」

ベジータ「ギニュー! グルド! えー……バータ! ……待てよ、ギニュー、グルド、バー……くそ、わからん! あっ、ザーボン! なにっ!? ドドリア! くそったれ! ギニュー! グル」

ブッブー!

ベジータ「はぁ……はぁ……」

関口宏「リクーム、ジース」

ベジータ「あーリクーム……」

657 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:19:39 ]
new Regex( @"^0+(?!\.)" )
でString.Emptyに置き換えてみたら

でもこれだと000は""になっちゃうけど

658 名前:デフォルトの名無しさん [2009/02/04(水) 21:22:25 ]
>>655

C#の構文は知らないのですが、

/^0+(\d)/$1/

に相当する正規表現でどうでしょうか

659 名前:デフォルトの名無しさん [2009/02/05(木) 10:33:34 ]
>>657
>>658
ありがとう(・ω・)
でもダメですた(;´Д`)

^0+(?!\.) 開始0の入力が不可ですた
/^0+(\d)/$1/  $1がサポられてないですた

お騒がせして申し訳ありませんでした。
もう少しイジくり回してみます。

660 名前:デフォルトの名無しさん [2009/02/05(木) 11:13:55 ]
秀丸エディタでの正規表現です。

abcdefghijxyz
abcdefg
xyzdefabc

から1行の中にabcとxyzの両方を含む行(1と3行目)を検索したいのですがどのように書いたらいいですか?

(.*abc.*xyz.*\n)|(.*xyz.*abc.*\n)
上のように書くとできるのですが含む文字列を増やした場合大変そうです。
本来はどのように書くのでしょうか教えてください。
簡単に&のような文字があるんでしょうか。

661 名前:659 [2009/02/05(木) 12:04:30 ]
お騒がせしました(・ω・)出来まスタ スタ
解:System.Text.RegularExpressions.Regex(@"(^|(?=\.))0(?=[0-9])");
ありがとう御座いました。

662 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 13:24:20 ]
>>660
www.din.or.jp/~ohzaki/regex.htm#And

663 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:27:14 ]
>>660
^(?=.*abc)(?=.*xyz).*$



664 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:37:08 ]
テキストファイルの検索でファイル内に複数の単語があるかどうか検索するときには
どういった感じにすればいいんでしょうか?


665 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:46:23 ]
>>664
ttp://www.pururu.co.jp/goods/item/430-0168/

666 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:30:49 ]
クラスの中でグループを使いたい場合はどうしたらいいですか?

[123(456)]
とした場合1/2/3/456にマッチする。

667 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:32:36 ]
中じゃなく外でやれ。
([123]|456)

668 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:17:30 ]
なるほろろ

669 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:05:59 ]
いやん。中に出して!

670 名前:659 [2009/02/06(金) 18:08:08 ]
>>667 悔しいけど感じちゃう ビクンッビクンッ

671 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:46:31 ]
janeviewでwsh使用してますが、
2000にマッチして、DATE: 2000にはマッチしないようにしたいのですが
どうしたらいいですか?

672 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:10:55 ]
(?<!DATE:)2000

かな。たぶん・・・
>>2
www.kt.rim.or.jp/~kbk/regex/regex.html#NEGATIVELOOKBEHIND
を読んで。

673 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:14:47 ]
おっと、WSH か・・・ダメかもしれないね。
if文で2重チェックすればいいんじゃない?



674 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:22:42 ]
>>2
.NET Framework 正規表現言語要素
msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp
にちゃんと書いてあった。
.NET なら (?<!・・・・) が使えるみたいだけど、WSH はよくわからん。どこに書いてるんだろう・・・

675 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:28:02 ]
WSH(JScript)の正規表現は↓でおk
msdn.microsoft.com/ja-jp/library/28hw3sce.aspx

676 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:29:02 ]
ググったら出てきた。

正規表現による Visual Basic Scripting Edition (VBScript) の機能強化
msdn.microsoft.com/ja-jp/library/ms974570.aspx

ここには (?<!・・・) は書いてない。
書いてないから出来ない、と考えるべきか、メンドクサイから書かなかったのか。
出来ることは書くが、出来ないことは書かない。フツウ、そうだよな・・・
ちなみに文書の日付は May 10, 1999 だ。
自分で実験してたしかめろや。

677 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:32:59 ]
>>675 そっちのが新しい文書やね。やっぱり (?<!・・・) は書いてない。

678 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:42:20 ]
鬼車使えばいいじゃん

679 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 03:54:02 ]
>>672-678皆さんありがとうございます。

>>678さん
いつのまにか鬼車ってやつに変わってたんですね
ヘルプの更新してなかったので気が付かなかったです。

鬼車にしたら>>672さんのやり方で出来そうだったんですけど、
なぜか、「正規検索のテスト」のウィンドウ上だとうまく出来てるみたいなんですが、
実際に「ログから検索」にかけるとDATE: 2000が掛かってしまうみたいです。(でもハイライトされない)

結局、検索を本文のみに絞るオプションを発見して一応望む結果は出せたのですが、
何故そうなるのか、どうもしっくり来ないです…

逆に(?<=DATE: )2000でログ検索かけてみると今度は全くマッチしない状態になります。
でもテストウィンドウ上ではちゃんとマッチするんですよね…。
なんかおかしい気がします。Janeのバグなんでしょうかね?

680 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:12:26 ]
hoge.net/dir/image/3桁の数字/3桁の数字.jpgというURLがあります
最後の「3桁の数字.jpg」を抜き出した意のですが、どのようにやったら綺麗にかけますか?
ヒントをください

681 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:16:20 ]
/[0-9][0-9][0-9].jpg$/

682 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:41:09 ]
/[0-9][0-9][0-9]\.jpg$/

683 名前:680 mailto:sage [2009/02/07(土) 20:52:29 ]
わかりました感謝します



684 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:33:57 ]
/\d{3}\.jpg$/

685 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:35:31 ]
gawkの質問です。
村にはヒットさせたいが、川村とか大村とか村の前に特定の文字がついた場合にはヒットしたくない場合、正規表現ではどう書けばいいでしょう?
/![川大]村/
とかでいいんでしょうか?


686 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:35:40 ]
/[^川大]村/

687 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:52:07 ]
ありがとうございました。

688 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:03:09 ]
これだとただの「村」にはマッチしないんだよな

689 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:11:32 ]
正規表現は難しいからね。これ自体が一つのプログラミング言語と同等だし。

690 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:13:29 ]
いや、それはない

691 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 01:21:53 ]
/[^川大]村|^村/

これはどうかね

692 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 08:51:21 ]
後方一致
/(?<![川大])村/

693 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 09:55:50 ]
gawkでって話だから戻り読みはなしだろう。




694 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:02:24 ]
●正規表現の使用環境
サクラエディタ v1.6.4.0

●検索か置換か?
置換

●説明
「 xml:space=preserve>」を検索のキーとして
キーを含む行末までの文を置換したい

●対象データ
<string1 xml:space=preserve> </string1>
<string2 xml:space=preserve>     </string2>

●希望する結果
<string1/>
<string2/>

よろしくお願いします

695 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:27:10 ]
s/<[^>]*xml:space=preserve>//g、でどうかな。

696 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:01:41 ]
* で貪欲マッチするとマズいか。
最初の文字が x だから、
s/<[^x]*xml:space=preserve>//g、でどうだ。

697 名前:デフォルトの名無しさん [2009/02/11(水) 13:40:25 ]
>>694

s/<([^\s]+)\sxml:space=preserve>[^\n]+<\/\1>/<\1\/>/g

でどうでしょう。

698 名前:デフォルトの名無しさん [2009/02/11(水) 13:44:59 ]
s/<([^\s]+)\sxml:space=preserve>[^\r\n]+<\/\1>/<\1\/>/g


改行コードが文字コードによっていろいろなので少し修正
XMLが複雑な入れ子構造だとうまく動作しない場合がありえますが
シンプルな構造で、閉じタグも同じ行にあるのなら大丈夫かも。
サクラエディタは持ってませんが()でのキャプチャは\数字で参照できるようですね。

699 名前:デフォルトの名無しさん [2009/02/11(水) 13:47:57 ]
s/<([^\s]+)\sxml:space=preserve>[^\r\n]+<\/\1>/<$1\/>/g


こういう風にも書けるのかな

700 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 15:55:48 ]
Perl互換の正規表現に対応しているソフトで

ab
cd

を検索するのに /ab.cd/m と書いたのにヒットしません。
/ab.*cd/m も /ab\ncd/m もダメです。バグでしょうか?

701 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:42:50 ]
>>700
そのソフトの名前を出してくれないならどこまで互換性あるのかわからないし
作者かユーザーに聞けとしか。

702 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:15:32 ]
>>700
ほんとうにperl互換なら、s オプションをつければいいと思う。

/ab[\r\n]*cd/s

703 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:09:38 ]
>>701
このeDocArrangementというソフトです。業務用なので値段がすごいです。試用版で勉強中です。
OCR結果から顧客名を取り出す作業をしたいと思いまして。。。
www.technostyle.net/edocarrangement/
>>702
ありがとうございました。出来ました。
\nだけではダメなんですね。詳説正規表現を読み始めたところですが、そんなことは書いてないような気がします。
別の教科書を探すべきでしょうか?



704 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:12:36 ]
>>703
\r\nなのはWindows環境だからじゃないの?
それでもオープン時にテキストモード指定してれば\nでいいけど。

705 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:18:46 ]
>>704
はい。窓です。正規表現の世界では異端なんですねw


706 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:28:21 ]
そもそもそのデータはどうやって持ってきてるの?
もしもデータがファイルにあって、ファイルオープンのコードを自分で書いたのなら
そのパラメタが間違ってるよ。

707 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:46:37 ]
>>706
OCRデータから目的のテキストだけを抜き出す作業です。
xdwファイルにOCRデータがありまして

氏名
西村ひろゆき
生年月日


というデータから名前を抜き出す作業です。
/氏名\n(.*)\n生年月日/m で抜き出せると思って試行錯誤したんですが、うまくいかなくて泣きついた次第です。
ファイルオープンのコードをかくという作業はありません。というか、低レベルなのでそういう高度な作業はよくわからない状態です。。。

708 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:52:31 ]
>>703
もし、正規表現を使い始めたばかりなら、詳説正規表現はまだ読むべきじゃない。
読むならまず入門書から入るべきかと。

709 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:56:53 ]
>>708
ありがとうございます。たしかに自分には早いのではないかという気がしていました。
はっきりと断言していただきありがとうございます。初心者用の教科書をAmazonで探します。
もしもお勧めがあれば、ご教示いただけましたら幸いです。希望ばかりで大変心苦しいのですが。。。

710 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:24:02 ]
>>705
行の末尾がOSによって異なるんだよ。
 \n だけのOS(うにくす系)
 \r だけのOS(りんご系)
 \r\n 両方必要なOS(まど系)
(ここまでは、パソコンの基礎知識)

この3種類に共通に使えるように
[\r\n]*
って書くんだよ。
(これは正規表現の応用問題。よく使う慣用句みたいなもの)

711 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:24:13 ]
自分はPerl本から入ったクチだけど、>>709の場合、
Perlの処理部分については必要ないよね、おそらく。

特に正規表現に関して言うなら、試行錯誤して身につけたものの方が多い。
一番参考にしたのは秀丸のヘルプだったりする。

だから本を買う前に、Googleで正規表現を検索して、トップ30ぐらいまでの
ページを順に読むほうがよいかと。

テキストエディタでの正規表現の利用方法を記載しているものもあるけど、
それらも基本は同じだから、まずそこでイメージを掴むべきかと。

本を買うのは、その後。、少しでも自分のイメージができた後で書店で中身を
確認して買うべきだと思う。

最近のテキストエディタは検索結果に一致する箇所にマーカーをするものもあるから、
それで勉強するのもベストかと。

自分が知っている分では秀丸とSakuraエディタ。それ以外にもあるとは思う。

712 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:34:50 ]
俺のオススメは >>2 のいちばん最初に書いてある
 正規表現メモ
 www.kt.rim.or.jp/~kbk/regex/regex.html
だな。

713 名前:694 mailto:sage [2009/02/11(水) 21:33:37 ]
>>695-699
お答えいただき、ありがとうございました
早速試してみたのですが、検索に引っかかりませんでした…



714 名前:デフォルトの名無しさん [2009/02/11(水) 22:57:49 ]
>>713

サクラエディタを使ったことないので、サクラエディタでの置換方法は分からないのですが

<(\S+)\sxml:space=preserve>[^\r\n]*<\/\1>

で検索にヒットしないでしょうか?
あとは、それを

<$1\/>

に換えるだけですむのですが・・

715 名前:デフォルトの名無しさん [2009/02/11(水) 22:59:51 ]
714では、

 [^\r\n]+



 [^\r\n]*

にしました

716 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:28:16 ]
っつーか、>>695のsed式での回答ってどうなんだろう?
個人的には、環境に左右されないからアリだと思うんだけど。
スラッシュで囲むっていう知識は前提にしていいのかな?

717 名前:694 mailto:sage [2009/02/12(木) 01:29:13 ]
>>714
出来ました!ありがとうございます!
しばらく頑張ってたのですが、どうにもうまくいかず参ってたところでした
本当にありがとうございました!

718 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 02:18:07 ]
>>716

まあ正規表現だってのをはっきりさせるのはいいと思うけど、
スラッシュ以外も区切りにできる(できないのもあるけど)というのを
知らない人がさらに増えるようなきがするのはやだなあ。


719 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 08:50:34 ]
>>718
なんか論点が違う気も。

720 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 02:32:08 ]
Firefoxのjavascriptを使って、

<div class="mori">
<h2>てすと</h2>
<img src="./test.gif">
</div>
<div>わわわ</div>

のようなHTMLからclassがmoriの上四行の部分を抜き出したいのですが、正規表現を

<div class="mori">(.|\n)*<\/div>

とすると最後の<div>わわわ</div>まで入ってしまいます。
次に

<div class="mori">[^(</div>)]*<\/div>

を試してみたのですが、これもうまくいきません。
角カッコの中は丸カッコで囲んでも無視されて一文字ずつに分解されてしまうようです。
どうすればいいんでしょうか?

721 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 03:26:11 ]
>>720
*や+は最も長く貪欲にマッチしようとするから、最後の</div>にマッチする。
*や+の直後に?を付ければ最小マッチになってできる限り短くしようとするから
望むような結果になるはず。


722 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 10:14:34 ]
JavaScriptならDOMで操作しないさいよ…


723 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:04:39 ]
>>721
おおおおお!まさにこれを求めていました!
いろんな場面で使えそうでとても助かります。どうもありがとうございます。

>>722
それがGM_xmlhttpRequestで得る値なので、全部テキスト形式になってしまうのです。



724 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:09:33 ]
phpで正規表現を使うかプログラムでゴリゴリ書くか迷ってます
やりたい事は、見出し語:[発音,][定義1][,"例文1","例文2",...][ *注記][; 定義2...]みたいな
テキストを分解して各(配列)変数に設定する、みたいな事なのですがpreg_match_allみたいな関数で
この程度なら実現可能そうでしょうか?
既に結構時間を使ってるので見込みが無さそうならサッサと見切りを付けたいのですが…


725 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:51:03 ]
全部ちゃんと分割できるよ

726 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:28:57 ]
うっ…出来るんですか。(まだ定義の分割すら碌に出来てない…)
もう少し頑張ってみます

727 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:45:00 ]
[*]の[]を普通の文字として扱いたいときどうすればいいんですか?

\[*\]だと無理ですよね

728 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:49:38 ]
ふつうは \[*\] でいいんだよ。ふつうは。

729 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:59:08 ]
そうですか・・・
\[*\]だと]しかクォートされないので・・・

730 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:21:17 ]
[[]*\]

731 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:40:27 ]
やはり]だけでした

732 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:45:24 ]
それをどうやって確かめてるんだ

733 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:53:05 ]
アナログ放送をIEPGで登録すると[S]や[字]といった文字が名前に付きこれが邪魔なのでリネームしたいんです
たとえばファイル名[S][字].avi
s/\[S\]//
してやるとファイル名[字].avi
となりますが
s/\[*\]//
とするとファイル名[S[字].avi
といった感じになります




734 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:57:33 ]
>>733
頭悪いのに勝手に自分で問題を切り分けずに、最初からそれをいえよw

*の使い方しらべとけ

735 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:00:07 ]
わからないんですね
すいません

736 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:00:43 ]
「頭悪い」なんていきなり何様ですか
わからないならわからないと言えばいいじゃないですか

737 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:17:22 ]
どっからどう見ても最初に質問した奴と途中の奴が別人w

738 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:19:09 ]
s/\[*m9(^Д^)\]//

739 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:28:42 ]
s/\[..*\]//

740 名前:デフォルトの名無しさん [2009/02/14(土) 23:26:05 ]
>733

横レス失礼します。

s/\[[^\]]*\]//g

これでどうでしょうか?

741 名前:デフォルトの名無しさん [2009/02/14(土) 23:33:42 ]
>>733

s/\[.*?\]//g


これでも大丈夫でしょう。
最短マッチに対応している正規表現エンジンの場合は。

*や+は条件に合致しつつできるだけ多くの文字を消費するような選択をします。
*?、+?は最短マッチといって、その条件を満たす最短の場合が選ばれます。
想定される用途では否定の文字クラス [^いろいろな文字] を使うか
最短マッチの .*? を使われると良いとおもいます。
別の表現なら否定先読み (?!文字列) をつかっても長くなりそうですが書けます。
ご参考になれば幸いです。

742 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 10:10:19 ]
>>733
最初からそれを書け。
コミュニケーション能力不足。
人間相手にコミュニケーションできないで
コンピュータ相手のコミュニケーションが出来ると思うのか?

s/\[[S字]\]//

743 名前:デフォルトの名無しさん [2009/02/15(日) 15:20:54 ]
補足です。
>>741の正規表現は*の前に見づらいかもしれませんがピリオド.があるのでご注意ください。


>>733の正規表現 /\[*\]/ にヒットする文字列はたとえば

]
[]
[[]
[[[]
[[[[]
[[[[[]

になります。



744 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 17:02:57 ]
いくらなんでも初歩で躓きすぎだろ
質問に無関係な知識押し付けてる方もひどいが

745 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:02:06 ]
>>742が一番馬鹿に見える

746 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:17:40 ]
キラーパスだな

747 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:22:04 ]
>>742はネタだろJK

748 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:12:37 ]
++とか(?>)とかのpossessive quantifierってどういうときに使ったっけ?
あれば便利そうは気はするし、実際なんかで使った記憶はあるんだけど思い出せない

749 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:05:15 ]
わからないから聞いてるならまだしも、忘れたから聞いてるってのはそれこそググレば?

750 名前:デフォルトの名無しさん [2009/02/19(木) 20:45:50 ]
すいません質問させてください

@/home/test/hoge/test/test.txt
A/home/test/hoge/test/document.txt
↑のパスがありまして、そこからtestで検索をすると
@のtext.txtのみが該当する正規表現ってうまく出来ないものでしょうか?
ファイルまでの途中のパスは含めないで最後のスラッシュ後のファイル名のみ
検索対象としたいのですが悩みまくりです・・・
イメージ的にはエディターでの正規表現で@のみ該当させる感じです。
どなたかご教授願えないでしょうか?

751 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:58:11 ]
C#を使っています
string か strin か stri か str か st か s
にマッチするパターンを今は↓のように書いているんですが
^s(t(r(i(n(g)?)?)?)?)?$
もっと分かりやすい書き方ってありますか?

752 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:42:23 ]
>>750
検索キー 「test.txt」

753 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:44:47 ]
>>750
/([^\/]+\/)*(.*)/ で、\1がパス、\2がファイル名。



754 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:54:31 ]
>>750
秀丸エディタなら↓これでいけた。他は知らん
(?<=.+/)test

755 名前:デフォルトの名無しさん [2009/02/19(木) 22:57:56 ]
>>750

test\.txt$

でどうでしょう

756 名前:デフォルトの名無しさん [2009/02/19(木) 22:59:13 ]
>>750

少し修正

test\.txt[\r\n$]

757 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:00:16 ]
ひどくなってるYO

758 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:01:43 ]
test\.txt(?=$|\b|[\r\n])

759 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:53:45 ]
YoutubeをダウンロードするFirefoxのuserchrome.jsスクリプトの一部なんだけど
var[ \r\n\t]+swfArgs[ \r\n\t]*=[ \r\n\t]*\{(.*,|)[ \r\n\t]*(t|'t'|"t")[ \r\n\t]*\:[ \r\n\t]*['"]([a-zA-Z\-_0-9]+=)['"].*\}
の(.*,|)の意味するところがわからない。    ↑
|って○○か××を意味するメタ文字じゃないの?なんで)の直前にあるんだろう?

760 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 03:00:42 ]
(foo|) は (foo)? と同じ意味では。

761 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 03:13:23 ]
.*0か1個以上ある?じゃあ.+と同じ?

762 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:04:22 ]
はあ?

763 名前:750 mailto:sage [2009/02/20(金) 08:57:02 ]
みなさんレスありがとうございます
例えが悪かったですが実現したいのはデスクトップの検索エンジンでのファイル名検索でファイル名のみで検索したいのです。
みなさんのレスを参考に思考錯誤してみます



764 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:27:44 ]
>>759
"t": "([^"]+)"
俺は、これで済ませてるw

765 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:39:41 ]
すみません(foo)?の意味がわかりません教えてください

>>764
それでいけるよねw

766 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:02:25 ]
>>751
C#なら
s.Length > 0 && "string".StartsWith(s)
のようにやればいいのに。

767 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:43:45 ]
女のコの性器表現てどれくらいの種類があるんだろう


768 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:56:18 ]
単語だけならともかく、そんなのは文脈によって変わるし、
『×××』だけでもそれを表すことができる上に、『大事なところ』などボカした表現までスコープを広げると
とても現代の正規表現で賄いきれるものではない。
言語学の分野で議論してくるがいい。

769 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:45:51 ]
C#でWBCかワールド・ベースボール・クラシックのどちらかを含み、かつイチローか松坂のどちらかを含むline、と正規表現で
if (Regex.Match(line,"(WBC|ワールド・ベースボール・クラシック) && (イチロー|松坂)").Success)
と書いてみたのですが、いまいちうまくヒットしないです。アドバイスお願いします。


770 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:15:33 ]
正規表現の中に && とか画期的すぎるだろ・・・
テンプレの正規表現講座でも見ておいで

771 名前:751 mailto:sage [2009/02/24(火) 22:56:03 ]
>>766
確かにその方がわかりやすいですね
ありがとうございます

772 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:58:18 ]
if (Regex.Match(line, "(WBC|ワールド・ベースボール・クラシック)").Success && Regex.Match(line, "(イチロー|松坂)").Success)
でいいんじゃね?C#知らないけど。
AND増えるなら条件を配列に入れてループで。

773 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:46:56 ]
line = "ぽにょワールド・ベースボール・クラシックぽにょイチローぽにょ"

Set RegExp1 = new RegExp
Set RegExp2 = new RegExp
RegExp1.Pattern = "WBC|ワールド・ベースボール・クラシック"
RegExp2.Pattern = "イチロー|松坂"

If RegExp1.Test(line) And RegExp2.Test(line) Then
Wscript.Echo "うんこ"
End If




774 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:49:30 ]
>>772
Regex.Match の使い方が間違ってる。ちゃんと説明書読んだ?

775 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:22:03 ]
C#知らないと言っている人にそんな指摘してもなあ

776 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:22:22 ]
C# カンケーない。Regex.Match の使い方が間違ってる。

777 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:42:59 ]
>>769>>772

if (Regex.Match(line, "WBC|ワールド・ベースボール・クラシック").Success && Regex.Match(line, "イチロー|松坂").Success)

で良いが、IsMatchのほうが良さげ。

if (Regex.IsMatch(line, "WBC|ワールド・ベースボール・クラシック") && Regex.IsMatch(line, "イチロー|松坂"))

778 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 19:33:25 ]
少しお聞きします。

1hage(100禿)
1hage(10毛)
1hage

という文字列があった場合に、1hage(100禿)以外をマッチさせたいのですが、
なかなかうまくいきません。
どのように正規表現を書いたものでしょうか?


779 名前:778 [2009/02/27(金) 19:34:25 ]
>>778
すいません。追記です。
具体的には、"hage"をヒットさせたいのですが、"禿"を含むもののみマッチさせないようにしたいのです。

780 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 19:36:03 ]
1hage にマッチしたものから 1hage(100禿) にマッチするものを取り除く、
じゃダメなのか? どうしても1個の正規表現でやんないとダメ?

781 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:30:52 ]
>>780
うん、やっぱりそれの方がスマートでよいですよね・・・
わかりました。

無理に正規表現だけでやらないとことにします。
ありがとうございました。

782 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:16:03 ]
文章中に「A」と「AA」が混在していて、
1文字だけの「A」を2文字の「AA」にします。
2文字以上連続していない、1文字だけの「A」は
どうやったら探せますか?
/A{1}/ でも駄目ですし、/A[^A]/ だと
行の中に A しかない物が引っ掛かりません。

783 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 16:40:50 ]
D:\jspsh>jspsh.exe
js> "A AA AAA".replace(/(^|[^A])A([^A]|$)/g, "$1AA$2")
AA AA AAA
js> :q
Leaving "JScript Power Shell"



784 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:51:49 ]
タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ

785 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:10:33 ]
>>783
ありがとう、試してみます。

786 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:45:20 ]
/(?<!A)A(?!A)/

787 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:28:35 ]
<A href="○○○○○○○">●●●●●</a>

<A href="○○○○○○○"><hogehogetag>●●●●●</hogehogetag></a>
という文字列から●●●●●を取り出したいのですが
どうやって書いたら良いか教えてケロ
決まってるのは<A href="○○○○○○○">の次の<>の外の文字列ということです。

788 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:14:08 ]
>>5みたいに書けばいいよ

789 名前:デフォルトの名無しさん [2009/03/12(木) 17:29:29 ]
「から最初の」までってどうやって抜き出すんですか?教えてください

790 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 17:40:07 ]
「[^」]*」

791 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 17:53:29 ]
ありがとうございました

792 名前:デフォルトの名無しさん [2009/03/13(金) 00:14:55 ]
SQL(SELECT、UPDATE、INSERT、DELETEが不明)から、
テーブル名をマッチさせる正規表現が解る方、どなたかいらっしゃらないでしょうか?

ひとつの表現で不可能なら、複数でもいいのですが…(´・ω・`)

793 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:25:51 ]
SQLの構文解析は正規表現じゃ無理



794 名前:デフォルトの名無しさん [2009/03/13(金) 01:07:40 ]
金額の文字にマッチするにはどう書けばよいですか?
123,456,789 ←こういうの

795 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 01:20:24 ]
\d{1,3}(,\d\d\d)* かな

796 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:53:14 ]
複雑な正規表現のテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。


797 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:57:59 ]
製品名を「鼻から悪魔」にしておけば何も問題は無い

798 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:11:43 ]
>>796
私も以前、このスレではない所で同様の質問をしたが、真面目な答えは
返ってこなかったよ。正規表現から見るとプログラムテストは鬼門かもね。


799 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:21:24 ]
複雑なC言語プログラムのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なjavaのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なPHPのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なバッチファイルのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なExcelマクロのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

・・・正規表現に限った話ではない。

>自分に都合のいいデータだけ作ってやってるけど。
問題の原因がハッキリわかってるじゃないか。それを対処すればいいじゃないか?
自分に都合のいいデータを作ってしまうのが問題なら、他人にデータを作ってもらえばいい。

800 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:42:08 ]
>>796
やったことはないが、本気でやるなら、こんな感じになるんだろう。

1.マッチすべきパターンについて構文木を作る
2.構文木を元に直交表を作る
3.実験計画法でテストケースを作る
4.テストケースをテストプログラム化する


801 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:59:43 ]
>>799
プログラム言語の場合はステップごととか、プロセジャーや
関数に分割してテストするし、型も助けになる。
正規表現の対象としているのは文字列でここから先は構文解析
しかない。複雑な組み込みシステムの入口、出口でどんな
テストデータを用意すればよいかというのと類似した問題だ。

802 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:26:09 ]
www.honya-town.co.jp/hst/HTdispatch?isbn_cd=4062574993
上記のwebページから以下の「マンガホーキング入門」の部分を取り出したいのですがうまくいきません
<tr>
<td bgcolor="#efefef" width="15%" align="center" nowrap><small>
書  名 </small></td>
<td width="85%"><font color="#333399" size="+1"> <strong> マンガホーキング入門 </strong> </font></td>
</tr>

"<strong>(.+?)</strong>"だとここ以外の強調部分もマッチしてしまうので
"書.*?名.+?<strong>(.+?)</strong>"のようにしたのですがこれだとひとつもマッチしてくれません
どのようにするべきなのでしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:28:20 ]
あれ、書 名 の部分は実際は書&nbsp;&nbsp;名です(&=>&)



804 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:36:57 ]
自己解決しました
「.」は\nを含まないのでだめだったようです
"書.*?名.+?\n.+?<strong>(.+?)</strong>"でいけました
スレ汚しすみませんでした

805 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:51:43 ]
JavaやC#に正規表現のコンパイル機能があるけど、あれって意味あるのかな?
いつも可読性を優先してRegex.Match(data,pattern)みたいに直接使ってるんだけど、
コンパイルが必要になるほど性能が必要な正規表現ってどんなのがあるん?

806 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:00:44 ]
>>805
一般論的に正規表現のコンパイルというと、何度も同じ正規表現を
使うときに差が出る。
それが有意な差になるかはプロファイル取ってみないとわからないけど。

ところで可読性なら生の正規表現よりも定数とかに入れて
名付けた方がいいんじゃない?めんどくさいけど。

807 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:06:30 ]
>>805
perlでo使ったらうれしいときと同じだよ。

808 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:09:58 ]
>>806
>ところで可読性なら生の正規表現よりも定数とかに入れて
>名付けた方がいいんじゃない?めんどくさいけど。

コード体系とかのパースの場合は定数化してるよ。
"Key: Value"なデータのパースとかはハードコードかな。
わざわざファイル移動で確認させる価値もないし。

809 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:47:41 ]
ルールを変更可能にするため外部化、ってのもよくあるパターンだと思うけど。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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