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


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

主题:求正则表达式

帅哥哟,离线,有人找我吗?
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]+$


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


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

参考

 

Dim s1 As String = "5号循环水泵"
Dim s2 As String = "6号循环水泵"
Dim count As Integer = 0
For Each s As String In s1
    If s2.Contains(s) = True Then
        count += 1
    End If
Next

msgbox(count)
msgbox(count/s1.length)


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


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

有点甜,在吗?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

1、正则应该是处理不来的。
2、下面的方法比较笨拙,效率不高:
Dim s1 As String = "5号循环水泵"
Dim s2 As String = "6号循环水的泵"
If s2.Contains(s1) Then
    msgbox("完全匹配")
    Return ""
End If
Dim count As Integer = s1.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 = s1.SubString(j,i)
        If s2.Contains(s) Then
            msgbox("匹配" & i & "个")
            Return ""
        End If
    Next
Next
3、最好的是使用AI,不过还没有研究,不会用

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

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


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

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

 

具体实例上传上来测试。


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

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