以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于正则表达式提取多组数据?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194257)

--  作者:zto001
--  发布时间:2024/11/22 16:58:00
--  [求助]关于正则表达式提取多组数据?
[求助]关于正则表达式提取多组数据?
我又多个正则表达式,需要提取多组匹配的上的数据要怎么写代码

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

--  作者:有点蓝
--  发布时间:2024/11/22 17:42:00
--  
dim 正则表达式 as string = "[JT\\d{5}|9\\d(7)|10\\d{3}]"
--  作者:zto001
--  发布时间: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

--  作者:有点蓝
--  发布时间: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
--  发布时间: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|就行了

--  作者:有点蓝
--  发布时间: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
--  发布时间: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})"
我用这个分出单号出来,然后怎么做到每个单号另一项值对应后面的文字?如果是绿色字体,又怎么能让后面没字的对应下面后面有字的内容?


--  作者:有点蓝
--  发布时间:2024/11/29 11:46:00
--  
原始数据是怎么样的?最终要什么效果,截图说明
--  作者:y2287958
--  发布时间: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编辑过]