Foxtable(狐表)用户栏目专家坐堂 → 求正则表达式


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

主题:求正则表达式

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/22 17:23:00 [只看该作者]

没看懂你例子的意思。你哪些字符和哪些字符比较得到相似度?

 

表A第一列、第二列,相似度比较,参考下面代码,如

 

For Each dr As DataRow In DataTables("表A").Select("")
    Dim s1 As String = dr("第一列")
    Dim s2 As String = dr("第二列")
    If s2.Contains(s1) Then
        dr("第三列") = "完全匹配"
    Else
        Dim count As Integer = 0
        For Each s As String In s1
            If s2.Contains(s) = True Then
                count += 1
            End If
        Next
        dr("第三列") = count/s1.length
    End If
Next


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/22 21:11:00 [只看该作者]

专利交易库中有‘交易要求’,交易要求意思就是有人求购专利的简介说明,还有‘专利名称’,专利名称就是有人要出售的专利名称,要求能自动匹配求购专利的‘’交易要求‘’与‘’专利名称‘’的符合度。例如:有人在交易要求中说求购太阳、电动车实用专利,如果专利名称列里面有关于太阳能或电动车之类的关键词,则自动找出来,总体意思是实现买方与卖方的自动匹配
[此贴子已经被作者于2019/1/22 21:14:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/22 21:33:00 [只看该作者]

这种遍历的方法效率低不说,匹配出来的结果也未必有用。建议还是找找AI方面的应用,比如BAT开放的自然语言处理方面的接口。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/23 9:34:00 [只看该作者]

请具体说明,你要比较哪些数据。什么数据和什么数据比较。

 

提取哪些行的【交易要求】?提取全部交易要求?然后循环每一行专利,比较匹配的字符个数?

 

请好好看懂之前的例子,自行改写一下代码啊。


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/23 9:40:00 [只看该作者]

针对每个交易要求,在专利名称中找符合度最高的

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/23 9:47:00 [只看该作者]

For Each dr As DataRow In DataTables("表A").Select("")
    Dim s1 As String = dr("第一列")
    Dim s2 As String = "这里写你的所有的交易要求"
    If s2.Contains(s1) Then
        dr("第三列") = "完全匹配"
    Else
        Dim count As Integer = 0
        For Each s As String In s1
            If s2.Contains(s) = True Then
                count += 1
            End If
        Next
        dr("第三列") = count/s1.length
    End If
Next


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/23 13:24:00 [只看该作者]

Dim s1 As List(of String)
Dim s2 As List(of String)
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
        For Each s11 As String In s1
         Dim count As Integer = s11.Length
        For i As Integer = count -1 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                If s22.Contains(s) Then
                    output.show("可能与交易要求:" & s22 & "           " & "匹配的专利是:" & s11 & "                           匹配有" & i & "个" & "  " & "          匹配的字符是:" & s)
                  
                End If
            Next
        Next
        ' End If
    Next
Next

图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看
实际运行速度有点慢,问题:1、如何排除特定字符,如“的”等明显没用的。2、代码查询的结果如何在窗口运行。3、运行结果如何保存到表里。4、如有连续测得4个字符则不在继续查询。

[此贴子已经被作者于2019/1/23 13:27:10编辑过]

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/23 13:29:00 [只看该作者]

如画圈地方,同一个如有高于2个以上字符符合,就
图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看
别再往下比较,目前来看,效率不高,速度慢,但i》2时还是能有些作用的

另外,SELECT语句与遍历相比是否效率高些?
[此贴子已经被作者于2019/1/23 16:47:50编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/23 16:57:00 [只看该作者]

比如代码

 

For Each dr As DataRow In DataTables("专利交易库").Select("专利名称 is not null")
    Dim s1 As String = dr("专利名称")
    Dim s2 As String = "用于门的电泳技术和喷涂技术,电镀喷涂之类的工艺--授权未缴费发明"
    If s2.Contains(s1) Then
        dr("相似度") = 1
    Else
        Dim count As Integer = 0
        Dim str As String = ""
        For Each s As String In s1
            If s2.Contains(s) = True Then
                count += 1
                str &= s
            End If
        Next
        dr("相似度") = format(count/s2.length, "0.00") & " " & str
    End If
Next


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/24 11:28:00 [只看该作者]

这比人工还是要快点,毕竟现在临时抱佛脚
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

 回到顶部
总数 25 上一页 1 2 3 下一页