Foxtable(狐表)用户栏目专家坐堂 → 如何用正则判断某一列中符合条件的行?


  共有3128人关注过本帖树形打印复制链接

主题:如何用正则判断某一列中符合条件的行?

帅哥哟,离线,有人找我吗?
南望
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
如何用正则判断某一列中符合条件的行?  发帖心情 Post By:2016/7/20 15:26:00 [只看该作者]

如何用正则判断表A中,第一列中符合1.2、1.2.3的行并删除?
1.2
1.2.3
123
2341


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 15:30:00 [只看该作者]

不明白你的意思,直接写

 

DataTables("表A").DeleteFor("第一列 = '1.2' or 第一列 = ''1.2.3")


 回到顶部
帅哥哟,离线,有人找我吗?
南望
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2016/7/20 15:32:00 [只看该作者]

是用正则来删除符合一定规律的行,不是固定的1.2 1.2.3,还有很多类似这样小标题的行,3.2,3.4,5.6、5.2.1.1等等

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 15:34:00 [只看该作者]

 那你可以删除,包含了句号 . 的行

 

DataTables("表A").DeleteFor("第一列 like '%.%'")

 

 如果要全部匹配,那么,你就要循环每一行,比较后,才能删除行。


 回到顶部
帅哥哟,离线,有人找我吗?
南望
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2016/7/20 15:38:00 [只看该作者]

就是每行都匹配一下,最好用正则的方式。删除包含“."的不够精确,会把其他带有点的也会删除掉。这些有规律的都是数字加.的形式。


 回到顶部
帅哥哟,离线,有人找我吗?
南望
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2016/7/20 15:41:00 [只看该作者]

麻烦老师帮我写个框架的代码例子:
用正则表达式来判断符合规律的行,然后删除掉。

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2016/7/20 16:02:00 [只看该作者]

问题解决,多谢红袍老师

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:3312 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2016/7/20 16:33:00 [只看该作者]

再问一下,行如果是D.1、 D.2。这类的正则应该怎么表示,正则不熟麻烦老师指点

 回到顶部
总数 11 1 2 下一页