-4

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

String1|Integer1|String2|String3|Integer2|...IntegerN`

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

基本上我只想能够单独拉出字段。

到目前为止,我有:

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

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

4

1 回答 1

0

尝试

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

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

于 2013-07-23T19:26:11.017 回答