|
Ognacさん、れいさん、もさん みなさんありがとうございます。
>Dim pat As String = "(?=.*あい)(?=.*かき)" こうして教えて頂いてはじめてわかりますが、 自分で考え付くのはむずかしいですね〜 本当にありがとうございました。
>単一の正規表現じゃなく素直にString.indexof()で調べたほうがいいかも. そうだったんですか。正規表現が検索等に対応した最新の高度な技術なのかと 思っていたもんで、まだ何も知らないもので……。
>今回はString.Containsを使えばいいだけなのでなおさら。 早速に調べたところ、Containsは内部的にindexof()を呼び出しているだけと ありました。
みなさんのお陰で無事に解決しました。 以下に教えていただいた方法でソースを書いてみました。 問題があったら申し訳ないですが、ご指導お願いいたします。 ありがとうございました。
// 正規表現を用いた、成功例 private void button1_Click(object sender, EventArgs e) { string[] rows = { "abc", "cde", "123", "ab12de", "de12ab", "12deab" };
Regex rg = new Regex("(?=.*ab)(?=.*12)");
var aa = from p in rows where rg.IsMatch(p.ToString()) select p;
foreach (string a in aa) Console.WriteLine(a.ToString()); }
// String.Containsを用いた、成功例 private void button1_Click(object sender, EventArgs e) { string[] rows = { "abc", "cde", "123", "ab12de","de12ab","12deab" };
string [] ss = {"ab","12"};
var aa = from p in rows where 文字列の有無(ss,ref p) select p;
foreach (string a in aa) Console.WriteLine(a.ToString()); }
bool 文字列の有無(string[] ss, ref string str) { for(int i=0; i<ss.Length; i++) if(!str.Contains(ss[i])) return false; return true; }
|