求写一个正则表达式

qq_15397935 2018-01-22 08:43:33
1.取±后面的整数或小数
例如:str="abdc±10%788" 结果=10
   str="234±0.789(abcd)" 结果=0.789
   str="233sdf324()^&$&^$%^&$" 结果=空字符串
我这样写,不知道大家能不能明白
...全文
544 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_15397935 2018-01-24
  • 打赏
  • 举报
回复
引用 25 楼 From_TaiWan 的回复:
我不是大神。也没什么技巧 就是,记住那些符号,必须的,再就是多练习,工作中有意识的用 没用过任何工具 正则不仅用在处理字符串,还用在好多地方,如web里面伪静态、路由规则等,还用于验证输入。其他语言也有,尤其是js里面的正则几乎和.net一样
dfsdf &R0.22:识别不了 结果应该是a="" b=0.22 dfsdf 33RTTTT 90R :识别不了 a="90" b=""
秋的红果实 2018-01-24
  • 打赏
  • 举报
回复
引用 18 楼 qq_15397935 的回复:
应该就这些了
呵呵 试下这个能用不,都写了几个了,没时间测试了 ((?<=[^A-Za-z])([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9]))?(±|R|KR|MR|Ω)(([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])(?=[^A-Za-z]))?
qq_15397935 2018-01-24
  • 打赏
  • 举报
回复
引用 26 楼 qq_15397935 的回复:
秋的红果实还在吗 [quote=引用 25 楼 From_TaiWan 的回复:] 我不是大神。也没什么技巧 就是,记住那些符号,必须的,再就是多练习,工作中有意识的用 没用过任何工具 正则不仅用在处理字符串,还用在好多地方,如web里面伪静态、路由规则等,还用于验证输入。其他语言也有,尤其是js里面的正则几乎和.net一样
好像还是有些问题可能是我没说清楚 3R1TT : a2=3, a4 = 1 后面的有字母也不行 应该是a2="" a4="" dfsdf123.3230Ω0333.22Ω: a2=3230, a4 = a2=333.22, a4 = 正确是a2=0333.22或333.22 a4="" [/quote] Ω与R一样的,这个不用管
qq_15397935 2018-01-24
  • 打赏
  • 举报
回复
秋的红果实还在吗
引用 25 楼 From_TaiWan 的回复:
我不是大神。也没什么技巧 就是,记住那些符号,必须的,再就是多练习,工作中有意识的用 没用过任何工具 正则不仅用在处理字符串,还用在好多地方,如web里面伪静态、路由规则等,还用于验证输入。其他语言也有,尤其是js里面的正则几乎和.net一样
好像还是有些问题可能是我没说清楚 3R1TT : a2=3, a4 = 1 后面的有字母也不行 应该是a2="" a4="" dfsdf123.3230Ω0333.22Ω: a2=3230, a4 = a2=333.22, a4 = 正确是a2=0333.22或333.22 a4=""
秋的红果实 2018-01-24
  • 打赏
  • 举报
回复
我不是大神。也没什么技巧 就是,记住那些符号,必须的,再就是多练习,工作中有意识的用 没用过任何工具 正则不仅用在处理字符串,还用在好多地方,如web里面伪静态、路由规则等,还用于验证输入。其他语言也有,尤其是js里面的正则几乎和.net一样
秋的红果实 2018-01-24
  • 打赏
  • 举报
回复
可以啊,给你验证了 要是后面也不能跟字母,用我#28的 string str = "R2ABC88 123.54KR13.33wwww66R 21MR56 888.8± dfsdf &R0.22:dfsdf 33RTTTT 90R"; 输出: a=,b= a=123.54,b=13.3 a=6,b= a=21,b=56 a=888.8,b= a=,b=0.22 a=33,b= a=90,b=
leon51 2018-01-23
  • 打赏
  • 举报
回复
授人以鱼不如授人以渔, 正则难写难记,大神有什么技巧,用什么工具呢?
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
红包就不要了,按时结帖就行 分享技术、解决问题就好
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
我的写法不会出现076,4.900这种情况
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
解决了

string str = "R2ABC88 123.54KR13.33wwww66R  21MR56 888.8±";
MatchCollection mColl = Regex.Matches(str, @"((?<=[^A-Za-z])([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9]))?(±|R|KR|MR)([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])?");
foreach(Match m in mColl)
{
    Response.Write("a=" + m.Groups[2].Value.ToString() + ",b="+m.Groups[4].Value.ToString() + "<br />");
}

qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
应该就这些了
qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
引用 17 楼 From_TaiWan 的回复:
请把所有要求一次全部说出来
其它的细节我可以慢慢再改
qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
只是这个比较复杂,我可能要运行测试才能说全
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
请把所有要求一次全部说出来
qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
引用 13 楼 qq_15397935 的回复:
[quote=引用 12 楼 From_TaiWan 的回复:]

string str = "R2ABC88 123.54KR13.33wwww66R  21MR56";
MatchCollection mColl = Regex.Matches(str, @"[^A-Za-z]([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])(±|R|KR|MR)([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])");
foreach(Match m in mColl)
{
    Response.Write("a=" + m.Groups[1].Value.ToString() + ",b="+m.Groups[3].Value.ToString() + "<br />");
}

我试试[/quote] dfsdf123.3230R0333.22R 还有这种情况 a1=0333.22 b1=""
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
啊?还有空白情况 我试一试
qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
引用 13 楼 qq_15397935 的回复:
[quote=引用 12 楼 From_TaiWan 的回复:]

string str = "R2ABC88 123.54KR13.33wwww66R  21MR56";
MatchCollection mColl = Regex.Matches(str, @"[^A-Za-z]([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])(±|R|KR|MR)([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])");
foreach(Match m in mColl)
{
    Response.Write("a=" + m.Groups[1].Value.ToString() + ",b="+m.Groups[3].Value.ToString() + "<br />");
}

我试试[/quote] dfsdf 33RTTTT 结果是a1=33 b1="" 还有dfsdf R33TTTT 结果是a1="" b1="33"
qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
引用 12 楼 From_TaiWan 的回复:

string str = "R2ABC88 123.54KR13.33wwww66R  21MR56";
MatchCollection mColl = Regex.Matches(str, @"[^A-Za-z]([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])(±|R|KR|MR)([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])");
foreach(Match m in mColl)
{
    Response.Write("a=" + m.Groups[1].Value.ToString() + ",b="+m.Groups[3].Value.ToString() + "<br />");
}

我试试
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复

string str = "R2ABC88 123.54KR13.33wwww66R  21MR56";
MatchCollection mColl = Regex.Matches(str, @"[^A-Za-z]([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])(±|R|KR|MR)([1-9]\d*\.\d*[1-9]|[1-9]\d*|0\.\d*[1-9])");
foreach(Match m in mColl)
{
    Response.Write("a=" + m.Groups[1].Value.ToString() + ",b="+m.Groups[3].Value.ToString() + "<br />");
}

qq_15397935 2018-01-23
  • 打赏
  • 举报
回复
引用 8 楼 From_TaiWan 的回复:
更正: @"([1-9]\d*|0\.\d*[1-9])±([1-9]\d*|0\.\d*[1-9])"
应该还不是我想要的, 查询的关键字有多个分别是R,KR,MR 第一个数字前还不能是字母 例如:str ="R2ABC88 123.54KR13.33wwww66R 21MR56" 结果要成对出现:a1="" b1=2 a2=123.54 b2=13.33 a3=21 b3=56 66R前是W是字母所以不行,你微信多少?我给你发个红包吧
加载更多回复(10)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧