Regex 如何在VB.net中的DataSet.Tables.Select()中使用正则表达式
我有一个包含多个值的数据集。我想从数据表BLABLA中获取数据集中的那些行,该数据表包含一个数字从0到6的“S”。然后我想在消息框中显示这些信息 我的正则表达式是Regex 如何在VB.net中的DataSet.Tables.Select()中使用正则表达式,regex,vb.net,select,datatable,dataset,Regex,Vb.net,Select,Datatable,Dataset,我有一个包含多个值的数据集。我想从数据表BLABLA中获取数据集中的那些行,该数据表包含一个数字从0到6的“S”。然后我想在消息框中显示这些信息 我的正则表达式是S[0-6] Dim answer As String = "" Dim myregex As Regex = New Regex("S[0-6]") Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select("Data LIKE '%myregex%'") Fo
S[0-6]
Dim answer As String = ""
Dim myregex As Regex = New Regex("S[0-6]")
Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select("Data LIKE '%myregex%'")
For k As Integer = 0 To SearchRows.Length - 1
If answer = "" Then
answer = SearchRows(k).Item("Data")
Else
answer = answer & vbNewLine & SearchRows(k).Item("Data")
End If
Next
MsgBox(answer)
不幸的是,SearchRows
为空。我无法通过调试找到原因。
我做错了什么?数据表。Select方法不支持正则表达式。如前所述,它确实允许您将一个
filterExpression
字符串作为参数传递给它,但仅仅因为它接受一个过滤器表达式并不意味着它支持正则表达式。相反,它的设计主要是支持与T-SQL中的WHERE
子句相同类型的表达式。T-SQL的类似于
运算符,而数据表也不一样。选择
。请参阅以了解数据表支持的模式表达式的规则。选择方法的LIKE
运算符
LIKE
运算符支持的过滤器表达式没有regex高级,因此几乎肯定不可能构造出如此特定的过滤器表达式。如果有一种方法可以过滤到0到6之间的数字,我不知道,文档中也没有提到。因此,如果确实需要按正则表达式筛选行,您仍然可以这样做,但需要选择所有行,然后自己进行筛选:
Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select().
Where(Function(r) myregex.IsMatch(r.Item("Data").ToString())).
ToArray()
如何在MessageBox中显示整行?到目前为止,它只是一个名为Data
的专栏。我不知道如何回答这个问题,因为我不知道你不理解其中的哪一部分。看起来你已经问过了,而且已经得到了回答。所以,如果这还不能回答你的问题,我需要更多的澄清,关于你真正需要什么和你到底不明白什么。无论如何,这是一个不同的问题,最好作为一个新问题提出,而不是在这里的评论中提出:)