2013-07-23 17 views
-4

我正在使用POSIX C正则表达式。我需要一个正则表达式来匹配消息中的几个字段。它还必须拒绝任何不符合格式的消息。消息fomat是:POSIX正则表达式来匹配邮件

的String1 |整数1 |字符串2 | STRING3 |整数2 | ... IntegerN`

的 '|'字符用作字段之间的分隔符。最终整数是包含0个或更多项目的列表。任何字段可能都是空白的(没有空格,分隔符之间没有隐藏的字符)。

基本上我只是希望能够分开领域。

到目前为止,我有:

.*|[0-9]3|.*|.*|([0-9]3|)50[\`] 

我写这个不为清楚起见任何转义字符。我还添加了每个字段可以包含的项目数量。我忘了消息字符的结尾。

+0

你尝试过什么吗?你有问题吗?或只是一个需求声明? – Macattack

+0

我刚开始使用它,所以我想从一个有经验的用户那里得到一个正确的答案,所以我知道什么时候我的理解是正确的。 我也认为我可能会对这个工作是否是正确的工具有意见。 – Terminal

+0

“分支”符合我的分隔符,是一个问题吗? – Terminal

回答

0

尝试

^([^|]+)\|([[:digit:]]+)\|([^|]+)\|([^|]+)((\|[[:digit:]]+)*)$ 

在你最喜欢的正则表达式引擎。如果您的String项目的性质受到限制,建议将它们合并到模式中以获得更可靠的错误检测。各个部分可用作捕获组1至5,其中#5包含所有最终整数。我不知道会自动分割部分模式的正则表达式引擎,但您应该能够使用类似于perl的split(/\|/, $_)的方法来达到此目的。

+0

谢谢@collapsar 我不认为我正确指定了100%的问题,但这应该给我一个好地方开始。 – Terminal