以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何用正则判断某一列中符合条件的行? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87824) |
-- 作者:南望 -- 发布时间:2016/7/20 15:26:00 -- 如何用正则判断某一列中符合条件的行? 如何用正则判断表A中,第一列中符合1.2、1.2.3的行并删除? 1.2 1.2.3 123 2341 |
-- 作者:大红袍 -- 发布时间:2016/7/20 15:30:00 -- 不明白你的意思,直接写
DataTables("表A").DeleteFor("第一列 = \'1.2\' or 第一列 = \'\'1.2.3") |
-- 作者:南望 -- 发布时间:2016/7/20 15:32:00 -- 是用正则来删除符合一定规律的行,不是固定的1.2 1.2.3,还有很多类似这样小标题的行,3.2,3.4,5.6、5.2.1.1等等 |
-- 作者:大红袍 -- 发布时间:2016/7/20 15:34:00 -- 那你可以删除,包含了句号 . 的行
DataTables("表A").DeleteFor("第一列 like \'%.%\'")
如果要全部匹配,那么,你就要循环每一行,比较后,才能删除行。 |
-- 作者:南望 -- 发布时间:2016/7/20 15:38:00 -- 就是每行都匹配一下,最好用正则的方式。删除包含“."的不够精确,会把其他带有点的也会删除掉。这些有规律的都是数字加.的形式。 |
-- 作者:南望 -- 发布时间:2016/7/20 15:41:00 -- 麻烦老师帮我写个框架的代码例子: 用正则表达式来判断符合规律的行,然后删除掉。
|
-- 作者:南望 -- 发布时间:2016/7/20 15:45:00 -- 例如标红部分内容的正则应该如何写: For Each r As Row In Tables("表A").rows Dim str As String = r("第一列") If str.Contains("B.") Then Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=]).*(?=当前审)") msgbox(mc.count) If mc.count > 0 Then msgbox(mc(0).value) End If End If Next |
-- 作者:大红袍 -- 发布时间:2016/7/20 15:46:00 -- Dim dt As DataTable = DataTables("表A") For i As Integer = dt.datarows.count-1 To 0 Step -1 Dim str As String = dt.datarows(i)("第一列") Dim reg As new System.Text.RegularExpressions.Regex("^[0-9.]+\\.+[0-9]+$") If reg.Ismatch(str) = True Then dt.datarows(i).delete End If Next |
-- 作者:南望 -- 发布时间:2016/7/20 16:02:00 -- 问题解决,多谢红袍老师 |
-- 作者:南望 -- 发布时间:2016/7/20 16:33:00 -- 再问一下,行如果是D.1、 D.2。这类的正则应该怎么表示,正则不熟麻烦老师指点 |