Foxtable(狐表)用户栏目专家坐堂 → [求助]关于正则表达式提取多组数据?


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

主题:[求助]关于正则表达式提取多组数据?

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


加好友 发短信
等级:六尾狐 帖子:1490 积分:10607 威望:0 精华:0 注册:2018/10/16 11:42:00
[求助]关于正则表达式提取多组数据?  发帖心情 Post By:2024/11/22 16:58:00 [只看该作者]

[求助]关于正则表达式提取多组数据?
我又多个正则表达式,需要提取多组匹配的上的数据要怎么写代码

比如正则表达式为: JT\d{5} 、 9\d(7)、  10\d{3}
有一个字符串里有多个可以满足上面的表达式,我需要全部提取出来

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/22 17:42:00 [只看该作者]

dim 正则表达式 as string = "[JT\d{5}|9\d(7)|10\d{3}]"

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


加好友 发短信
等级:六尾狐 帖子:1490 积分:10607 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2024/11/22 18:35:00 [只看该作者]

Dim s As String = e.Form.Controls("XZ_工单诉求").text
Dim p As String = "[JT\d{13}|777\{13}|773\{13}|9\d{12}]"
Dim rgx = New System.Text.RegularExpressions.Regex(p, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
For Each match As System.Text.RegularExpressions.Match In rgx.Matches(s)
    Output.Show(match.Value)
'为啥提取出来的是一个一个字,不是整段的
Next

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/23 9:10:00 [只看该作者]

Dim s As String = e.Form.Controls("XZ_工单诉求").text
Dim p As String = "[^JT\d{13}|777\{13}|773\{13}|9\d{12}]"
Dim str = System.Text.RegularExpressions.Regex.Replace(s, p, "")
Output.Show(str)

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


加好友 发短信
等级:六尾狐 帖子:1490 积分:10607 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2024/11/24 13:32:00 [只看该作者]

Dim 数 As Integer
Dim s As String = "773323782297528核重0.28kg,单包100g,顾客买了16包,只收到了两包,已重新补发"
Dim p As String = "[^JT\d{13}|777\{13}|773\{13}|9\d{12}]"
Dim str = System.Text.RegularExpressions.Regex.Replace(s, p, "|")
Output.Show(str)
Dim Values() As String
Values = str.split("|")
For Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index))
Next

为啥会匹配到   |0|28|||||100||||||16||||||||||||||      这些数字?
我只用匹配773323782297528|就行了

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/24 20:09:00 [只看该作者]

Dim s As String = "777323782297528核重0.28kg,单包100g,顾客773323782297528核重0买了16包,只收到了两包,已重新补发"
Dim p As String = "(777\d{12})|(773\d{12})"
Dim m As String
Dim rgx = New System.Text.RegularExpressions.Regex(p, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
For Each match As System.Text.RegularExpressions.Match In rgx.Matches(s)
    Output.Show(match.Value)
Next

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


加好友 发短信
等级:六尾狐 帖子:1490 积分:10607 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2024/11/29 11:27:00 [只看该作者]


77726254933004 地址不对 

77022028646147 揽收未发出 核实有无发出记录 需拦截请告知

77642469315623 非我司
77726227589187
77726227284092
77726227002822  
77726227211195
77726227963980 非我司
777262069163325 朱玉芳[9749]

如果我想把上面的字段分出来做到表里或者json里。
 "(777\d{11})|(776\d{11})|(770\d{11})"
我用这个分出单号出来,然后怎么做到每个单号另一项值对应后面的文字?如果是绿色字体,又怎么能让后面没字的对应下面后面有字的内容?


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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/29 11:46:00 [只看该作者]

原始数据是怎么样的?最终要什么效果,截图说明

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


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2024/11/29 11:51:00 [只看该作者]

Dim s As String = "77022028646147 揽收未发出 核实有无发出记录 需拦截请告知"
Output.Show(Regex.Match(s, "^77[760]\d{11}").Value)
Output.Show(Regex.Replace(s, "^77[760]\d{11}", ""))
[此贴子已经被作者于2024/11/29 12:37:52编辑过]

 回到顶部