gpt4 book ai didi

c - 用于匹配消息的 POSIX 正则表达式

转载 作者:行者123 更新时间:2023-11-30 21:31:09 24 4
gpt4 key购买 nike

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

字符串1|整数1|字符串2|字符串3|整数2|...整数N`

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

基本上我只是希望能够单独提取字段。

到目前为止我已经:

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

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

最佳答案

尝试

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

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

关于c - 用于匹配消息的 POSIX 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com