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


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

主题:求正则表达式

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


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
求正则表达式  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/7/15 9:03:00 [只看该作者]

[],{}中的字数不确定

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/7/15 16:06:00 [只看该作者]


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


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


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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/15 16:18:00 [只看该作者]

不同语言的正则规则不一样的。3楼的适合c#或者vb.net,不适合js

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


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By: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>"]


 回到顶部