相关疑难解决方法(0)

正则表达式:我希望这个和那个......以任何顺序......

我甚至不确定这是否可能,但这就是我想要的.

String: "NS306 FEBRUARY 20078/9/201013B1-9-1Low31 AUGUST 19870"
Run Code Online (Sandbox Code Playgroud)

我有一个文本框,我在其中键入搜索参数,它们是空格分隔的.因此,我想返回一个匹配字符串是string1在字符串中,然后string2在字符串中,或​​者string2在字符串中,然后string1在字符串中.我不在乎字符串的顺序是什么,但是它们(我将会超过2个)必须在字符串中.

例如,在提供的字符串中我想要:

"FEB Low"
Run Code Online (Sandbox Code Playgroud)

要么

"Low FEB"
Run Code Online (Sandbox Code Playgroud)

......作为比赛返回

我真的是regex的新手,只读了一些关于这里的教程,但那是不久前我需要今天完成这个.星期一我开始了一个更重要的新项目,不能分散这个问题.无论如何使用正则表达式来执行此操作,还是必须遍历搜索过滤器的每个部分并排列顺序?任何和所有的帮助非常感谢.谢谢.

更新:我不想迭代循环并且正在寻找最佳性能的原因是因为不幸的是,我使用的dataTable在每次按键时调用此函数,我不希望它陷入困境.

更新:谢谢大家的帮助,非常感谢.

代码更新:

最终,这就是我的目标.

string sSearch = nvc["sSearch"].ToString().Replace(" ", ")(?=.*");
if (sSearch != null && sSearch != "")
{
  Regex r = new Regex("^(?=.*" + sSearch + ").*$", RegexOptions.IgnoreCase);
  _AdminList = _AdminList.Where<IPB>(
                                       delegate(IPB ipb)
                                       {
                                          //Concatenated all elements of IPB into a string
                                          bool returnValue = r.IsMatch(strTest); //strTest is the concatenated string
                                          return returnValue;
                                    }).ToList<IPB>();
                                       }
}
Run Code Online (Sandbox Code Playgroud)

IPB类有X个元素,在我所工作的整个站点中没有一个表是相同顺序的列.因此,我需要任何订单搜索,我不想写很多代码来做它.这里还有其他好的想法,但我知道我的老板真的很喜欢Regex(讲道他们),因此我认为如果我现在就这样做是最好的.如果由于某种原因网站的性能下滑(内部网站点),那么我会尝试另一种方式.感谢大家.

c# regex

43
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

regex ×1