Regex 与给定字符串匹配的VB.Net正则表达式

Regex 与给定字符串匹配的VB.Net正则表达式,regex,vb.net,Regex,Vb.net,我有两个字符串数组,如下所示(B是A的子集),并试图从A中提取B上匹配的元素 A = ["1.1","1.1.1","1.1.2","1.1.3","1.2","1.3","1.4",....] B = ["1.1.*","1.2"] This should return ["1.1.1","1.1.2","1.1.3","1.2"] 我的示例尝试解决此问题: Dim regEx As New Regex("1.1.*") Console.WriteLine(regEx.IsMatch("

我有两个字符串数组,如下所示(B是A的子集),并试图从A中提取B上匹配的元素

A = ["1.1","1.1.1","1.1.2","1.1.3","1.2","1.3","1.4",....]
B = ["1.1.*","1.2"]

This should return ["1.1.1","1.1.2","1.1.3","1.2"] 
我的示例尝试解决此问题:

Dim regEx As New Regex("1.1.*")
Console.WriteLine(regEx.IsMatch("1.1.1"))   'TRUE which is Expected
Console.WriteLine(regEx.IsMatch("1.1"))     'TRUE - Expected is FALSE

这里的技巧是使用正则表达式而不是Like运算符。为了使用正则表达式,需要通过将每个点替换为
\.
和*替换为
\d+
将模式(B数组项)重建为正则表达式模式。
\d+
将匹配任何长度的任何数字。

*
匹配0个或更多字符<代码>+匹配一个或多个字符。使用
+
。如果你想匹配文字上的点,就用逃逸点。如果需要匹配整个字符串,请添加锚。或者,如果只想匹配通配符,请使用
like
运算符。添加到重复列表中。注意:正则表达式不是通配符。除了
1.2
之外,我想不应该匹配
1.2.1
。我没有办法更改B数组中的元素。数据源是一个外部服务。你能帮我吗
Dim A() As String = {"1.1.1","1.1.2","1.1.3","1.2","1.3","1.4"}
Dim B() As String = {"1.1.*","1.2"}

Dim isMatch = Function(str As String, patterns() As String)
                  For Each pattern As String In patterns
                      If pattern.Contains("*") Then
                            Dim regexPattern As String = "^" & pattern.Replace(".","\.").Replace("*", "\d+") & "$"
                            If Regex.IsMatch(str, regexpattern) Then Return True
                        Else
                            If str.Equals(pattern) Then Return True
                        End If
                    Next

                    Return False
              End Function

Dim result = A.Where(Function(s) isMatch(s, B))