我正在使用POSIX C正则表达式。我需要一个正则表达式,它将匹配消息中的几个字段。它还必须拒绝任何与格式不匹配的消息。消息fomat是:
字符串1 |整数1 |字符串2 | STRING3 |整数2 | ... IntegerN`
'|' character用作字段之间的分隔符。最终整数是包含0个或更多项的列表。任何字段都可以为空(没有空格,分隔符之间没有隐藏字符)。
基本上我只想分别拉出字段。
到目前为止,我有:
.*|[0-9]3|.*|.*|([0-9]3|)50[\`]
为了清楚起见,我写了这个没有任何转义字符。我还添加了每个字段可以包含的项目数。我忘记了消息字符的结束。
答案 0 :(得分:0)
试
^([^|]+)\|([[:digit:]]+)\|([^|]+)\|([^|]+)((\|[[:digit:]]+)*)$
在你最喜欢的正则表达式引擎中。如果对String
项的性质有限制,建议将它们合并到模式中,以便更可靠地检测错误。各个部分可用作捕获组1到5,其中#5包含所有最终整数。我不知道会自动分段部分模式的正则表达式引擎,但你应该能够使用类似于perl的split(/\|/, $_)
的方法。