- 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ライブラリは機械翻訳だからしかたないべ
|

|