以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何用正则判断某一列中符合条件的行?  (http://foxtable.net/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。这类的正则应该怎么表示,正则不熟麻烦老师指点