Regex Visual Basic正则表达式问题

Regex Visual Basic正则表达式问题,regex,vb.net,Regex,Vb.net,我有一个字符串列表。当用户输入字符时,程序将在文本框中显示列表中所有可能的字符串 Dim fruit as new List(Of String) 'contains apple,orange,pear,banana Dim rx as New Regex(fruit) 例如,如果用户输入a、p、l、e、r,那么程序将显示apple和pear它应该与输入了所有字母的任何条目相匹配,而不考虑顺序和其他字母。 我应该在rx中添加什么?如果正则表达式无法实现此操作,请指定其他方法。LINQ方法: D

我有一个字符串列表。当用户输入字符时,程序将在文本框中显示列表中所有可能的字符串

Dim fruit as new List(Of String) 'contains apple,orange,pear,banana
Dim rx as New Regex(fruit)
例如,如果用户输入a、p、l、e、r,那么程序将显示apple和pear它应该与输入了所有字母的任何条目相匹配,而不考虑顺序和其他字母。
我应该在rx中添加什么?如果正则表达式无法实现此操作,请指定其他方法。

LINQ方法:

Dim fruits As New List(Of String) From { "apple", "orange", "pear", "banana" }
Dim input As String = "a,p,l,e,r"
Dim letters As String = input.Replace(",", "")
Dim result = fruits.Where(Function(fruit) Not fruit.Except(letters).Any())
正则表达式方法:

Dim fruits As New List(Of String) From { "apple", "orange", "pear", "banana" }
Dim input As String = "a,p,l,e,r"
Dim letters As String = input.Replace(",", "")
Dim result = fruits.Where(Function(fruit) Not fruit.Except(letters).Any())
匹配结果的正则表达式模式类似于:

"^[apler]+$"
这可以建立为:

Dim fruits As New List(Of String) From { "apple", "orange", "pear", "banana" }
Dim input As String = "n,a,b,r,o,n,g,e"
Dim letters As String = input.Replace(",", "")
Dim pattern As String = "^[" + letters + "]+$"
Dim query = fruits.Where(Function(fruit) Regex.IsMatch(fruit, pattern))

为什么苹果和梨会出现而其他的不会出现?输入字符的顺序是否相关?例如,
a,p,l
匹配
apple
p,l,a
不匹配?而且:
pear
在您的示例中真的应该匹配吗?因为在您的字符列表中有一个
l
。因为用户没有为橙色输入o,n,g,为香蕉输入b,n。这样做的目的是显示所有输入字符的单词,但a是橙色的,l不是梨形的。那么为什么pear和orange不匹配呢?@Andrew:听起来它应该匹配任何输入了所有不同字母的条目,而不管顺序和其他字母。这对pear来说不会失败吗?而且,在我看来,它会返回任何包含
a,p,l,e
但也包含其他字母的单词,比如
maple
@Joel您的评论是正确的。我错过了OP评论中的澄清。@Joel查看更新方法。它现在应该考虑到这些问题。我如何在文本框中显示结果?@Cobold您需要在结果上循环并将其附加到文本框中。。。或者,如果您想将它们显示为逗号分隔的项目列表,您可以使用
Dim text作为String=String.Join(“,”,result)