POSIX正则表达式匹配消息

时间:2013-07-23 19:05:33

标签: c regex posix

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

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

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

基本上我只想分别拉出字段。

到目前为止,我有:

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

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

1 个答案:

答案 0 :(得分:0)

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

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