请教一个正则

kennie_190602169 2010-11-01 09:21:56
大家好,我想匹配一个字符串: a10

要求如下:
1. 以a开头
2. 第2位和第3位不能同时是0

即可以匹配到 a10, a02, a23, 但是不能匹配a00

谢谢!
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kennie_190602169 2010-11-01
  • 打赏
  • 举报
回复
不好意思,最开始的需求是我表达不清楚.
我想提取数据的, 数据源是类似于 '0','1','50','100' 想提取我要求的字符串.

已经解决了, 谢谢大家!
-过客- 2010-11-01
  • 打赏
  • 举报
回复
你是想验证格式呢,还是想提取数据

数据源是什么样的,每次输入一个类似于'0','1','50','100'这样的数据源,还是从一大段文本中去匹配

现在的需求和你最开始的需求联系不起来,不是很清楚你究竟想要什么
kennie_190602169 2010-11-01
  • 打赏
  • 举报
回复
噢..也对,我考虑不周,那改成:

在 '0','1','50','100'中, 匹配一个字符串: '0','1' 而后面的 '50','100' 不要

要求如下:
1. 前2个''里出现的数字不限位数.
2. 前2个''里的数字不能同时是0

即在字符串:
'0','1','50','100'
'1','0','150','50'
'12','0','5000','100'
'23','0','50','200000'
里可以匹配得到

但是不能匹配:
'0','0','50','20'


dobdream 2010-11-01
  • 打赏
  • 举报
回复
像这种不能怎么样类型的匹配,可以参考零宽度负预测先行断言(?!表达式)
-过客- 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kennie_190602169 的回复:]
不好意思,条件说的不太清楚,更正一下:

1. 以a开头
2. 整个字符串由3部分组成.第一部分是a, 第二部分和第三部分一样, 是一个数字,位数不定,而第二部分和第三部分不能同时是0


即可以匹配到 a110(三部分是a,11,0), a021(三部分是a,0,21), a23(三部分是a,2,3), 但是不能匹配a00(三部分是a,0,0)
[/Quote]

你这规则不成立,程序怎么知道a110是a,11,0,而不是a,1,10
kennie_190602169 2010-11-01
  • 打赏
  • 举报
回复
不好意思,条件说的不太清楚,更正一下:

1. 以a开头
2. 整个字符串由3部分组成.第一部分是a, 第二部分和第三部分一样, 是一个数字,位数不定,而第二部分和第三部分不能同时是0


即可以匹配到 a110(三部分是a,11,0), a021(三部分是a,0,21), a23(三部分是a,2,3), 但是不能匹配a00(三部分是a,0,0)

事理 2010-11-01
  • 打赏
  • 举报
回复
private bool IsMath(string str){
string reg="^a(([0-9][1-9])|([1-9][0-9]))$";
if (Regex.Match(str, reg, RegexOptions.Compiled).Success)
return true;
return false;
}
-过客- 2010-11-01
  • 打赏
  • 举报
回复
2和3位都是数字?

^a(?!00)[0-9]{2}$
事理 2010-11-01
  • 打赏
  • 举报
回复
^a(([0-9][1-9])|([1-9][0-9]))$

111,129

社区成员

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

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

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