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


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

主题:求正则表达式

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
求正则表达式  发帖心情 Post By:2019/1/17 21:46:00 [显示全部帖子]

例子
A:压力电动门
规则:1、只测试中文
         2、按中文规则,所有字符按从左到右顺序。
         3、要求取出A在另外一个字符窜的符合度。
         4、如A的总长度为5,则在另外一个字符中出现的情况如下
       
        
B:一种压力电磁阀的改进               A有连续3个字符与B相符   相似度:3/5
C:一种电动摩托车                         A有连续2个字符与C相符   相似度:2/5
D:一种流体阀门的测量装置            A有连续1个字符与D相符   相似度:1/5
E:一种压力电动效应                       A有连续4个字符与E相符   相似度:4/5
F:一种压力电动门的改进                A有连续5个字符与F相符    相似度:5/5

问题:
给个正则表达式
要求:A是表“”求购“”中字段“”求购要求“”内容,从B到F是同表中“”出售“”字段内容,则按上述例子给个正则表达式


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/17 22:01:00 [显示全部帖子]

自己顶

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/17 22:07:00 [显示全部帖子]

自己顶,刚学正则,这是可能用到的
匹配中文字符的正则表达式: [\u4e00-\u9fa5]

或许你也需要匹配双字节字符,中文也是双字节的字符

匹配双字节字符(包括汉字在内):[^\x00-\xff]

注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

更多常用正则表达式匹配规则:

英文字母:[a-zA-Z]

数字:[0-9]

匹配中文,英文字母和数字及_:

//code from http://caibaojian.com/zhongwen-regexp.html
^[\u4e00-\u9fa5_a-zA-Z0-9]+$

同时判断输入长度:·

[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}

^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$

1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:

^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$

其中:

^ 与字符串开始的地方匹配

(?!_)  不能以_开头

(?!.*?_$)  不能以_结尾

[a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线

$  与字符串结束的地方匹配

放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"

(或者:@"^(?!_)\w*(?<!_)$" 或者 @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ " )

2、只含有汉字、数字、字母、下划线,下划线位置不限:

^[a-zA-Z0-9_\u4e00-\u9fa5]+$


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
代码没反应????  发帖心情 Post By:2019/1/21 16:31:00 [显示全部帖子]

Dim S1 As List(Of String)   ‘定义集合
Dim S2 As List(Of String)   ‘定义集合
S1 = DataTables("专利交易库").GetValues("专利名称")    ‘取出专利交易库中专利名称
S2= DataTables("专利交易库").GetValues("交易要求")     ‘取出专利交易库中交易要求
Dim count  As Integer = 0  ‘定义循环变量’
For Each s As String In s1  ‘再取出专利名称集合中的每一项’
    For Each s11 As String In s 再取出专利名称集合中每一项的每个字符
        For Each s21 As String In s2  再取出交易要求集合中每一项的每个字符
           If s21.Contains(s11) = True Then ‘按字符逐个比较专利要求余专利名称的符合度’
               count += 1  ‘找到相符字符,变量加1’
               Output.Show(s11)
                    msgbox(count)
                    msgbox(count/s21.length)  

           End If
         Next
     Next
Next

问题:红色字体部分代码的运行原理:是代码注释的意思吗?我希望是逐个字符匹配,如果匹配了一个字符,继续,比如A“我们合同大学”和B”我是学生的门卫“,这两个字符的比较,我希望从左到右开始,先比较“我“,A,B开始都是“我”,则按A为准则,“我”的后面是“我们“,在包含“我“”的基础上,继续比较“”我们“,此段代码在实际运行中结果不是我想要的,请问还能有其他办法吗?正则刚开始学
[此贴子已经被作者于2019/1/21 16:36:37编辑过]

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/21 16:44:00 [显示全部帖子]

有点甜,在吗?

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/22 15:19:00 [显示全部帖子]

有点甜,在吗?能把你在楼上的帖子逻辑结合我的代码做个例子吗?循环转不出来了。目的:对于“专利交易库“中“交易要求”,“专利名称”做匹配
[此贴子已经被作者于2019/1/22 15:21:20编辑过]

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/1/22 16:46:00 [显示全部帖子]

实例。怎么传不上啊
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:zy.table

[此贴子已经被作者于2019/1/22 17:02:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
utcxray
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
utcxray
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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