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


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

正規表現 Part6



1 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 00:36:04 ]
正規表現(Regular Expression)スレです。

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

【 前スレ 】 正規表現 Part5
pc12.2ch.net/test/read.cgi/tech/1212498448/

722 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:36:48 ]
googleに頼り切ってるヤツの弱点に見えるけどなぁ

ttp://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html
>a{n}? = ちょうどn回の繰り返しにマッチします。ちょうどn回なので、a{n}と等価であり、一貫性のためだけに存在します。

要するに/x{1}/の意味を問うているようなもん

723 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 12:53:43 ]
>>722
的確な回答ありがとうございます。

>googleに頼り切ってるヤツの弱点に見えるけどなぁ
検索ばかりしてるんじゃなく良書を得てそれで勉強せよ、またはGoogleに頼り切ってると
目が節穴になるぞ、というお叱りと理解いたしました。

☆perlretut - Perl の正規表現のチュートリアル
ttp://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html
これは>>2の一番最初、「正規表現メモ」のページにある一番最初のリンクですね。
答えへの近道はGoogleでなく、このスレにあったようで…目が節穴でした。
このチュートリアルはとても解説が丁寧で、まさしく良書だと思います。これで勉強します。

結論としては /x{n}/ と /x{n}?/ は同じ結果なので、通常 {n}? は使用されない、ですね。

やはりPerlだと細かい情報もしっかりあってスゴイです。
これからは正規表現で悩んだらこのスレとPerlの周辺を当たってみようと思います。

724 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 15:57:50 ]
>>723
それ、Perlのマニュアルなんだよ。UNIX系のシステムだったら
man perlretut を実行すると表示されるよ。

ウェブを見るより先にマニュアルを読めってことで。



725 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:31:29 ]
.NET のマニュアルにも {n}? は {n} と等価って書いてあるな。
なんか訳が微妙におかしいけど。

msdn.microsoft.com/ja-jp/library/3206d374(VS.80).aspx

726 名前:723 mailto:sage [2010/01/12(火) 22:05:22 ]
>>724
UNIX系とは縁がありませんが、perlre/perlretutはWeb上にあるので、それをmanの代わりにします。
Javascriptで使える表現かどうかは、以下を見てチェック。
☆RegExp - Core JavaScript 1.5 Reference - Mozilla Developer Center
ttps://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp
出来るだけ大本の公式情報を参照すべし、ですね。

>>725
情報ありがとうございます。間違ってはいませんが、確かに変ですねぇ。

perlretut、面白いですね−。塩基配列のストップコドンのとことか。
自習してみて、チュートリアルと同じ結果になるのを確認したのはいいのですが…
Javascript:var R=/(\w\w\w)*?TGA/g, S='ATCGTTGAATGCAAATGACATGAC', A = [], I = 0; while(R.test(S)) {A[I] = RegExp.lastMatch + ' (' + RegExp.lastParen + ') Pos=' + R.lastIndex; ++I;} alert(A.join('\n\n'));
なぜずれるのか、理解できず…。その後バックトラックの動作を知り、単に「必ず3文字ずつ進む」と
思い込んでただけだと気付きました。。。マッチにトライして失敗したらそこで終わりではなく、
開始位置を1文字進めるんですね。筆者が仕掛けた罠に見事にハマりました。。。
というか、こういう処理は素直に3文字ずつ取り出して判定すべきですよね。
なお、Javascriptには\Gなんてありませんでした。残念!

727 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 21:03:05 ]
>726
man じゃなくても perldoc perlretut でいけるよ。

728 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:56:04 ]
>>725
MSDNライブラリは機械翻訳だからしかたないべ






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

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

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