以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求正则表达式  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170181)

--  作者:qq252476275
--  发布时间:2021/7/15 9:01:00
--  求正则表达式
求教1个正则表达式:

内容为:

if([单重]>400,24*{数量1},if([单重]>200,12*{数量2},if([单重]>70,8*[数量],if([单重]>50,6*[数量],if([单重]>40,5.5*[数量],if([单重]>30,5*[数量],if([单重]>20,4.5*[数量],if([单重]>10,4*[数量],if([单重]>2,3.5*[数量],3*[数量])))))))))


如何将[]与{}中的值提取出来成为数组

arr1 = [\'[单重]\',\'[单重]\' .....]
arr2 = [\'{数量1}\',\'{数量2}\']

--  作者:qq252476275
--  发布时间:2021/7/15 9:03:00
--  
[],{}中的字数不确定
--  作者:有点蓝
--  发布时间:2021/7/15 9:14:00
--  
Dim pattern As String = "\\[\\w+(?=\\])\\]" \'Dim pattern As String = "\\{\\w+(?=\\})\\}"
Dim txt = "if([单重]>400,24*{数量1},if([单重]>200,12*{数量2},if([单重]>70,8*[数量],if([单重]>50,6*[数量],if([单重]>40,5.5*[数量],if([单重]>30,5*[数量],if([单重]>20,4.5*[数量],if([单重]>10,4*[数量],if([单重]>2,3.5*[数量],3*[数量])))))))))"
Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)

For Each  match As System.Text.RegularExpressions.Match In rgx.Matches(txt)
    Output.Show(match.Value )
Next

--  作者:qq252476275
--  发布时间:2021/7/15 16:06:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:zzbds2.png
图片点击可在新窗口打开查看
为什么这个正则表达式在 “在线正则表达式测试工具”中以及浏览器的控制台中无效果?


图片点击可在新窗口打开查看此主题相关图片如下:zzbds.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/7/15 16:18:00
--  
不同语言的正则规则不一样的。3楼的适合c#或者vb.net,不适合js
--  作者:qq252476275
--  发布时间:2021/7/15 17:21:00
--  
使用  Dim p1 As String   = "\\[.*?\\]" , c# , js 都可以。

以下内容为程序代码:

1
2 Dim pattern As String = "\\[\\w+(?=\\])\\]" \'Dim pattern As String = "\\{\\w+(?=\\})\\}"
3
4 Dim txt = "if([单重1]>400,24*{数量1234},if([单重234]>200,12*{数量245},if([单重3]>70,8*[数量],if([单重]>50,6*[数量],if([单重44444444444]>40,5.5*[数量],if([单重]>30,5*[数量],if([单重]>20,4.5*[数量],if([单重]>10,4*[数量],if([单重]>2,3.5*[数量],3*[数量])))))))))"
5 Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
6
7 For Each match As System.Text.RegularExpressions.Match In rgx.Matches(txt)
8 Output.Show(match.Value )
9 Next
10 Output.Show("di er zhong " )
11
12 Dim p1 As String = "\\[.*?\\]"
13 Dim re = new system.text.regularExpressions.regex(p1, system.text.regularexpressions.RegexOptions.IgnoreCase)
14
15 For Each match As System.Text.RegularExpressions.Match In rgx.Matches(txt)
16 Output.Show(match.Value )
17 Next
18


输出:
[单重1]
[单重234]
[单重3]
[数量]
[单重]
[数量]
[单重44444444444]
[数量]
[单重]
[数量]
[单重]
[数量]
[单重]
[数量]
[单重]
[数量]
[数量]
di er zhong
[单重1]
[单重234]
[单重3]
[数量]
[单重]
[数量]
[单重44444444444]
[数量]
[单重]
[数量]
[单重]
[数量]
[单重]
[数量]
[单重]
[数量]
[数量]


--  作者:qq252476275
--  发布时间:2021/7/15 17:25:00
--  
学习的这篇文章中的


以下内容为程序代码:

1 var s = "<html><head><title></title></head><body></body></html>";
2 var r = /<.*?>/
3 var a = s.match(r); //返回单个元素数组["<html>"]