Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 让正则表达式忽略搜索项的顺序_.net_Regex - Fatal编程技术网

.net 让正则表达式忽略搜索项的顺序

.net 让正则表达式忽略搜索项的顺序,.net,regex,.net,Regex,可能重复: 我让我的用户输入一个搜索词:“foobar” 我希望将用户查询转换为与单词匹配的字符串,但忽略顺序: bla foo bla bar = match ^^^ ^^^ bla bar bla foo = match (order = reversed) ^^^ ^^^ bla bla bla foo = no match (only one word) ^^^ bar bla bla bla = no match

可能重复:

我让我的用户输入一个搜索词:“foobar”

我希望将用户查询转换为与单词匹配的字符串,但忽略顺序:

bla foo bla bar   = match
    ^^^     ^^^
bla bar bla foo   = match (order = reversed)
    ^^^     ^^^
bla bla bla foo   = no match (only one word)
            ^^^
bar bla bla bla   = no match (only one word)
^^^
注意:该示例包含2个单词,但我的用户将变得疯狂,并将输入更多单词

如果不忽略顺序,很简单:将空格替换为“*”,我有一个非常好的匹配项

但是我怎么能让正则表达式忽略顺序,仍然匹配两个(或更多)单词呢


我是否需要生成一个与可能的订单组合相匹配的正则表达式?

我建议使用混合方法。将搜索词以|分隔的形式存储在变量$search中。然后查找
/(?:$search)。。。(?:$search)/g
其中(?:$search)重复次数等于搜索词的数量

如果匹配,则将其拆分为术语、排序并检查重复。如果没有,则匹配;如果有重复,继续下一个


您使用的是哪种.NET语言?我们可能想给出示例代码。

请参见以下答案:

当顺序不重要时,基本上是一系列单独的搜索,对吗?你能简单地对每个单词执行一次搜索,并且只返回所有搜索成功的结果吗?

这是计划B。使用单个正则表达式需要更少的重构,而我今天很懒。