搜索当然非正则莫属
string ss = @"aaabbbccc
abcdabcd
eeeddd
ffffffgg";
string str = "ab d";
Regex reg = new Regex(str.Replace(" ",".*"), RegexOptions.IgnoreCase);
foreach (string s in ss.Split('\n'))
{
if (reg.Match(s).Success) Console.WriteLine(s);
}
实际操作中要对str进行比较复杂的处理
参考:
public static Regex PrepareRegex(string query)
{
//string[] words;
Regex r = null;
query = query.Trim().Replace(" ", " ");
StringBuilder sb = new StringBuilder();
// Replace Regex special characters, adding support for wildcards
sb.Append(EscapeRegexChars(query).Replace("\\*", ".*").Replace("\\?", "."));
if (query.StartsWith("\"") && query.EndsWith("\""))
{
// Exact phrase
sb.Remove(sb.Length - 1, 1);
sb.Remove(0, 1);
sb.Insert(0, @"\b(");
sb.Append(@")\b");
sb.Replace(" ", @")\b[\s\r\n]+\b(");
r = new Regex(sb.ToString(), RegexOptions.IgnoreCase);
}
else
{
sb.Insert(0, @"(\b(");
sb.Append(@")\b)");
sb.Replace(" ", @")\b)|(\b(");
r = new Regex(sb.ToString(), RegexOptions.IgnoreCase);
}
return r;
}
private static string EscapeRegexChars(string input)
{
StringBuilder sb = new StringBuilder(input);
sb.Replace(@"\", @"\\"); // This must be done BEFORE all others
sb.Replace("~", @"\~");
sb.Replace("!", @"\!");
sb.Replace("\"", @""");
sb.Replace("(", @"\(");
sb.Replace(")", @"\)");
sb.Replace("[", @"\[");
sb.Replace("]", @"\]");
sb.Replace("{", @"\{");
sb.Replace("}", @"\}");
sb.Replace("/", @"\/");
sb.Replace("^", @"\^");
sb.Replace("$", @"\$");
sb.Replace("?", @"\?");
sb.Replace("+", @"\+");
sb.Replace("*", @"\*");
sb.Replace("#", @"\#");
sb.Replace(".", @"\.");
sb.Replace(":", @"\:");
sb.Replace("<", @"\<");
sb.Replace(">", @"\>");
sb.Replace("=", @"\=");
return sb.ToString();
}