1 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:07:34 ] 前スレ VB.NET質問スレ(Part25) pc11.2ch.net/test/read.cgi/tech/1203650042/ テンプレは2〜5くらいまでの間にある予定
804 名前:デフォルトの名無しさん [2008/09/14(日) 18:39:55 ] "abcdああああabcdいいいいabcdううううabcdええええabcdおおおおabcd" という文字列を、"abcd.*?abcd"という正規表現で検索したら、 "abcdああああabcd""abcdいいいいabcd""abcdううううabcd""abcdええええabcd""abcdおおおおabcd" がヒットする事になると思うのですが、 str="abcdああああabcdいいいいabcdううううabcdええええabcdおおおおabcd" Dim reg As New Regex("abcd.*?abcd", RegexOptions.IgnoreCase Or RegexOptions.Singleline) Dim m As MatchCollection = reg.Matches(str) For Each h As Match In m MsgBox(h.ToString) Next としたところ、"abcdああああabcd"の後、”い”から検索を始めてしまうらしく、 "abcdああああabcd""abcdううううabcd""abcdおおおおabcd" しかヒットしません。 この場合全部ヒットさせるにはどうすればいいでしょうか? それとも根本的になにか間違っていたりしますか?
805 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:35:38 ] 正規表現のパーサーって普通は文字列を先頭から終りに向かって一方向にスキャンするだけで 後戻りはしないだろう常識で考えて。 っていうか"abcd.*?"って意味不明のような気がするんだけどこれって何か 特別な書き方なんだっけ?
806 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:46:10 ] そうなんですか チェックに使っていたEmEditorFreeというソフトだと全部ヒットしていたんですがなにか複雑な処理でもしてるんですかね .*?は、任意の文字の0回以上の繰り返しの最短一致、のつもりで使ってました
807 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:17:55 ] >>806 ごめん最短一致については俺が無知だっただけみたいだ。 正規表現得意じゃないんでベストかどうかは保証できないけど以下のコードで 一応できたよ。 Private Function GetAllMatches(ByVal text As String) As String() Const pattern As String = "(abcd.*?abcd)(.*)" Dim reg As New Regex(pattern, RegexOptions.IgnoreCase Or RegexOptions.Singleline) Dim m As Match = reg.Match(text) If m.Success Then Dim match As String = m.Groups(1).Value Dim matches As New List(Of String) matches.Add(match) Dim leftover As String = m.Groups(2).Value matches.AddRange(GetAllMatches(leftover)) Return matches.ToArray Else Return New String() {} End If End Function '---------------------------------------- Dim Str As String = "abcdああああabcdいいいいabcdううううabcdええええabcdおおおおabcd" For Each s As String In GetAllMatches(Str) Console.WriteLine(s) Next
808 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:35:25 ] ごめん Dim leftover As String = match.Substring(1) + m.Groups(2).Value に修正しといてw 我ながらものすごい大ボケだな(恥)
809 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:17:54 ] うーん凄いですね・・・ 左を一文字削って繰り返すのはわかるんですが関数の中で自分自身を呼んでる所で頭がパニックになります・・・
810 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:40:37 ] >関数の中で自分自身を呼んでる所で 一度手を止めて、 再帰とか再帰呼び出しって言われる手法について一通り学んでみた方が良くね?
811 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:46:26 ] というか、別に非難するとか咎めるとかじゃなくて素直に驚いたんだけど、 正規表現使う人が再帰呼び出しを知らないっていう、いまはそういう時代なんだな。 なんかドラゴンボールでスーパーサイヤ人のくせに空飛べない悟天に驚いた 悟飯の心境というかなんというか。。
812 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:01:38 ] まあ正規表現自体はプログラミングを志すよりも先に Wordやフリーのテキストエディタで出くわすものだろうし
813 名前:デフォルトの名無しさん [2008/09/14(日) 23:40:40 ] 境界線無しの状態でフォームサイズ変更できるようにする方法ないですか?
814 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:43:13 ] 正規表現なんてWordで出くわすか?w 多機能エディタならメニューに入ってる確立が高いので なんじゃこりゃって思うかも知れないけど
815 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:21:23 ] ワイルドカードぐらいだな
816 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 01:56:04 ] 正規表現なんて鯖弄ってる奴か勉強してきた奴以外はしらないだろ
817 名前:ギギギ・・ mailto:sage [2008/09/15(月) 03:48:51 ]
818 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 12:14:10 ] 俺はPerlで書かれた掲示板CGIを改造してた時に出くわしたな
819 名前:デフォルトの名無しさん [2008/09/15(月) 17:18:03 ] >>816 だな。
820 名前:デフォルトの名無しさん [2008/09/16(火) 03:08:52 ] >>787 =>>803 だけど。 このスレ相当レベル低いんだな。 期待した俺が馬鹿だった。ごめん。 精々再帰呼び出しや正規表現でも語ってろ。 それから、確率を確立って書くか?w
821 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 04:29:10 ] 日本語変換って知ってる? 別に自分で書いているわけじゃないんだよ。
822 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 06:26:02 ] Registory
823 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 07:59:25 ] レジ・ストーリー キタコレw トイストーリーの仲間かw
824 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 08:48:08 ] レベルの低い質問ですが、 ListViewの一番右のColumnHeaderの右端を、ListViewの右端に固定する方法はありますでしょうか
825 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 10:25:18 ] >>824 ありますん
826 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 11:00:16 ] >>824 途中のカラムの幅変えられても右端は変わらず 横スクロールバーも出ないように、みたいな事? そりゃ、ColumnWidthChanging イベント捕まえて 自分で計算してやるしか。
827 名前:デフォルトの名無しさん [2008/09/16(火) 13:35:12 ] data(i) = cmd : i = i + 1 こういう : のついた式の意味をググりたいのですが なんと調べればいいんでしょうか?
828 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 13:40:35 ] : は式の一部じゃない 調べ方は、VSのヘルプのキーワード検索で : 一字を入力 なんでもgoogleは芸がないぜ
829 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 13:42:14 ] その記号は「コロン」と呼ぶ。
830 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 13:50:30 ] マルチステートメントでぐぐってみそ
831 名前:827 mailto:sage [2008/09/16(火) 14:00:07 ] >>828 >>829 >>830 1行に複数構文なんですね 今まで他言語をやっててVBのソースを見たとき VBにはこういう式があるのあと思ってしまいました… ありがとうございます!
832 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 14:14:51 ] 昔のMSXBASICとかマルチステートメントで1行プログラムとかやってたな…
833 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 21:21:30 ] 達磨さんが:だ
834 名前:デフォルトの名無しさん [2008/09/17(水) 14:37:07 ] DirectX SDK(March 2008)をインストールしたんだけど、 参照の追加でどれを選択したらいいんですか? visual basic 2008 Express を使ってます。
835 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:30:40 ] >>834 Managed DirectXでググれ
836 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:21:28 ] AxWindowsMediaPlayerコントロールを表示してて、トレイに最小化して また復帰するとDockがFillにもかかわらず標準のサイズに戻ってしまう のだがどうもならんのだろうか .Size=new size(〜で指定しても一瞬だけ広がってまたすぐ戻ってしまう
837 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:29:23 ] 丁度今読んでたこれみたいな事かな natchan-develop.seesaa.net/article/18029500.html
838 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:50:31 ] いや、フォーム自体は元に戻るんだが、その上に貼ったパネルに FillしたAxWindowsMediaPlayerが小さくなってしまうというもの (起動時はちゃんと一杯にFillしてる) 一応動くことは動く(再生出来る)のだが、ちとみっともないし…
839 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:53:55 ] >>804 もし、---***---===---というパターンが前提であるならば Dim sp() As String = New String() {"abcd"} Dim s As String = "abcdああああabcdいいいいabcdううううabcdええええabcdおおおおabcd" Dim ss() As String = s.Split(sp, StringSplitOptions.RemoveEmptyEntries) For i As Integer = 0 To ss.Length - 1 ss(i) = sp(0) & ss(i) & sp(0) Next でもいける。
840 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:52:19 ] そういう場当たり的な泥臭いことをしたくないから正規表現使ってるんだと思うけど。 っていうか論点ズレてるよ。 804の質問は、あるパターンに一致する文字列を網羅的に全部抜き出したいって意味でしょ抽象的に言えば。 あと余計なお世話だろうけど、配列名()っていう配列の宣言方法って違和感感じるなあ。
841 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:04:12 ] まったく余計なお世話ですね 氏ねばいいのに
842 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:06:38 ] 違和感感じるなあ(笑)
843 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:24:08 ] 幼稚臭いな。 というより、そういう反応というのは「ボキュのアイデンティティは2チャンネラです」 って言ってるのに等しいと思うんだが、自分のアイデンティティが「2チャンネラ」 なんていうチープなものでも悲しいとも思わないんだから逆説的に幸せな奴だな。
844 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 12:04:34 ] >>843 みたいな奴ってのは、 「誰宛にレスしたものかは自分だけが知ってればいい」とでも思ってるんだろうか。
845 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:32:04 ] SortedListのシリアライズは可能ですか? ここを見てArrayListをSortedListにしてみたのですが、'Dictionary が実装されているため シリアル化できません' って言われてしまって出来ませんでした。 ttp://www.atmarkit.co.jp/fdotnet/easyxml/easyxml11/easyxml11_04.html 結局SortedListをArrayListにしてシリアライズしました。 取り出しはデ・シリアライズ後、ArrayListをSortedListにしました。 シリアライズできるものと出来ないものって、どうやって決定されるんでしょうか。 どうかご教示お願いします。 そこんとこを上手く解説した書籍なりサイトなりがありましたら、あわせてお願いします。
846 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 19:59:08 ] >>845 ジェネリックの方を使ってもダメなの?
847 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:44:44 ] XMLは結構制限だらけだからな…