【发布时间】:2017-08-10 16:32:44
【问题描述】:
在继续之前,我需要使用 C# 中的正则表达式确保字段具有正确的语法。这是我的代码:
Description = 'AB1234567,AB3456789;AB2345678';
Regex reg = new Regex("(AB.{7},?)*;?(AB.{7},?)*");
Match match = reg.Match(Description);
if (!match.Success)
{
//code to raise error
}
所以,一些语法规则:
- 该字段包含 2 个字母(在本例中为 AB)后跟 7 个字符的元素。
- 这些元素以逗号分隔,位于“;”的左侧或右侧。它们在哪一边表示它们的属性,但任何一边都可以是空的。
- 如果右侧不为空,则“;”为必填项,如果为空则为可选项。
- 每边的最后一个元素不能以“,”结尾。
正确示例:
- AB1234567,AB3456789;AB2345678
- AB1234567,AB3456789;
- AB1234567
- ;AB2345678,AB34567890
错误示例:
- AB1234567,;AB2345678
- AB3456789;AB2345678,
我的正则表达式不完整,但我想不出如何考虑所有情况。这个问题的正确正则表达式是什么?
【问题讨论】:
-
最终目标是什么?你需要提取列表中的AB***吗?
-
是的,分成两个列表。
-
好的,这里的正则表达式应该可以工作 (?
AB\d{7}[,;]) 您将收到匹配作为命名组。 goto: regex101.com 输入你的正则表达式和测试数据..你会做的很好.. -
好的,你自己去投票吧。