gpt4 book ai didi

c# - 动态分隔符上的字符串拆分

转载 作者:行者123 更新时间:2023-12-03 19:22:16 27 4
gpt4 key购买 nike

我要处理以下问题。我必须从通信缓冲区中提取消息。遗憾的是,通信协议(protocol)很糟糕并且结构不完善。我想出区分缓冲区中数据包的唯一方法是由服务器传输的中间“ack”命令。

示例:

[Packet1][ACK][Packet2][ACK][Packet3]

我本来可以使用 String.Split(ACK),但分隔符也不一致。不过,有 3 条规则来识别 ack 数据包。

  1. 以“AK”开头。
  2. 以“0”或“1”结尾。
  3. 总长度为 5 个字符。

确认示例:
“AKxxy”其中:
xx:(01 到 99)
y:(0 或 1)

我希望可能有一个正则表达式可以解决我的问题,但我缺乏所需的知识和时间。

有没有正则表达式“专家”可以帮助我?请随意提出任何解决方案。
谢谢。

编辑:
示例数据包(我确实必须删除数据包信息):
AK010CONFIDENTIALPACKET1AK011CONFIDENTIALPACKET2AK020AK011CONFIDENTIALPACKET3AK021CONFIDENTIALPACKET4AK050

遗憾的是,协议(protocol)中的每个数据包都没有以特定字符开头或结尾,因此我无法区分它们。为了识别每一个,我必须使用 ack 数据包将它们分开,然后对每一个执行不同的检查。

最佳答案

直接翻译是

\bAK\d{2}[01]\b

那就是

\b    # a word boundary
AK # AK literally
\d{2} # two digits
[01] # one of 0 or 1
\b # another word boundary

不过,该表达式需要进行测试(请参阅 a demo on regex101.com )。

关于c# - 动态分隔符上的字符串拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085707/

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