求2个正则表达式

yaotomo 2014-05-25 10:00:02
第一个是满足以下格式
XX,XX,XX,XX;XX,XX|XX,XX,XX,XX;XX,XX|XX,XX,XX,XX;XX,XX|XX,XX,XX,XX;XX,XX......(长度不限制),每个XX是一个包含字符或数字的字符串,例如以下
4L03583L21,L123456,2400,2400,150;2400,0640400161|4L03583L22,L123456,2400,2400,150;2400,0640400161|4L03583L24,L123456,2400,2400,150;2400,064040016

第二个正则要满足以下格式
XX,XX,XX,XX,XX;XX,XX*XX,XX|XX,XX,XX,XX,XX;XX,XX*XX,XX|XX,XX,XX,XX,XX;XX,XX*XX,XX....(长度不限制),每个XX是一个包含字符或数字的字符串,例如以下
4L03583L21,L123456,2400,2400,150;1100,0640400162*1300,0640400163|4L03583L22,L123456,2400,2400,150;1200,0640400161*1200,0640400161|4L03584L24,L123457,2400,2400,150;1200,0640400161*1200,064040016
...全文
156 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotomo 2014-05-27
  • 打赏
  • 举报
回复
谢谢大侠,得救了。
夜轻风 2014-05-27
  • 打赏
  • 举报
回复
^\w+(,\w+){4};\w+,\w+(\|\w+(,\w+){4};\w+,\w+)*$ ^\w+(,\w+){4};\w+,\w+\*\w+,\w+(\|\w+(,\w+){4};\w+,\w+\*\w+,\w+)*$
yaotomo 2014-05-27
  • 打赏
  • 举报
回复
谢谢楼上两位,但是只能匹配一个单元 比如第一个 4L03583L21,L123456,2400,2400,150;2400,0640400161|4L03583L22,L123456,2400,2400,150;2400,0640400161|4L03583L24,L123456,2400,2400,150;2400,064040016 可以匹配 把第一个单元修改为不符合格式的字符串 4L03583456,240,150;2400,0640400161|4L03583L22,L123456,2400,2400,150;2400,0640400161|4L03583L24,L123456,2400,2400,150;2400,064040016 也是可以通过的
yaotomo 2014-05-26
  • 打赏
  • 举报
回复
谢谢版主,不过试了一下通不过验证啊。看了一下,正则里没有包含;(分号)这个分隔符。这两个字符串里都有分号啊。 小弟对正则一窍不通,请版主指点。
文盲老顾 2014-05-26
  • 打赏
  • 举报
回复
[0-9a-zA-Z]+(,[0-9a-zA-Z]+){4};[0-9a-zA-Z]+,[0-9a-zA-Z]+(\|[0-9a-zA-Z]+(,[0-9a-zA-Z]+){4};[0-9a-zA-Z]+,[0-9a-zA-Z]+)* [0-9a-zA-Z]+(,[0-9a-zA-Z]+){4};[0-9a-zA-Z]+,[0-9a-zA-Z]+\*[0-9a-zA-Z]+,[0-9a-zA-Z]+(\|[0-9a-zA-Z]+(,[0-9a-zA-Z]+){4};;[0-9a-zA-Z]+,[0-9a-zA-Z]+\*[0-9a-zA-Z]+,[0-9a-zA-Z]+)*
夜轻风 2014-05-26
  • 打赏
  • 举报
回复
第二个正则 \w+(,\w+){4};\w+,\w+\*\w+,\w+(\|\w+(,\w+){4};\w+,\w+\*\w+,\w+)* 如果XX*XX的部分一定为数字的话就用这个 \w+(,\w+){4};\w+,\d+\*\d+,\w+(\|\w+(,\w+){4};\w+,\d+\*\d+,\w+)*
夜轻风 2014-05-26
  • 打赏
  • 举报
回复
string strRegex1 = @"\w+(,\w+){4};\w+,\w+(\|\w+(,\w+){4};\w+,\w+)*";
            string strTest = @"4L03583L21,L123456,2400,2400,150;2400,0640400161|4L03583L22,L123456,2400,2400,150;2400,0640400161|4L03583L24,L123456,2400,2400,150;2400,064040016";
            if (!Regex.IsMatch(strTest, strRegex1))
            {
                Console.WriteLine("error");
            }
            else
            {
                Console.WriteLine("ok");
            }
liuyilin888 2014-05-26
  • 打赏
  • 举报
回复
yaotomo 2014-05-26
  • 打赏
  • 举报
回复
下面的代码测试总是提示格式不正确,请大神帮忙看一下

string strRegex1 = @"((\w+(,\w+))((\w+(,\w+)))+)(\|((\w+(,\w+))((\w+(,\w+)))+))+";
string strTest = @"4L03583L21,L123456,2400,2400,150;2400,0640400161|4L03583L22,L123456,2400,2400,150;2400,0640400161|4L03583L24,L123456,2400,2400,150;2400,064040016";
 if (!Regex.IsMatch(strTest, strRegex1))
 {
   MessageBox.Show("格式不正确!");
  }
 else
 {
   MessageBox.Show("格式正确!");
}       
smthgdin_020 2014-05-26
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
((\w+(,\w+))((\w+(,\w+)))+)(\|((\w+(,\w+))((\w+(,\w+)))+))+
这个ok。
threenewbee 2014-05-25
  • 打赏
  • 举报
回复
另一个把\w替换为\dL\*
threenewbee 2014-05-25
  • 打赏
  • 举报
回复
((\w+(,\w+))((\w+(,\w+)))+)(\|((\w+(,\w+))((\w+(,\w+)))+))+

110,536

社区成员

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

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

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