C++正则表达式。获取带分隔符的字符串

问题描述:

我创建了一个简单的聊天提升asio,std线程和正则表达式。C++正则表达式。获取带分隔符的字符串

我的聊天“协议”是这样的“名\ 0password \ 0msg \ 0”请帮助我写一个正则表达式,将解析和验证此字符串。

我需要从这个字符串来获得:名,密码和味精

名称使用正则表达式 “\ d \ W {1,11}” 和密码:“{1,12}

如何结合这个表达式,并获得名字,从字符串

我想这传递和味精:” \ d \ W {1,11} \ {0} 1,12 \ 0 * \。 0“但是!!!但!!!这个正则表达式匹配开始和最后'\ 0'之间的所有字符串。该如何解决?

+1

目前尚不清楚究竟是什么问题。 “[T]他的正则表达式匹配开始和最后一个'\ 0'之间的所有字符串” - 并且......它应该怎么做?你期望正则表达式匹配什么?这甚至与JavaScript或称为“任务”的并发线程有什么关系? – Xufox

+0

你真的不需要regex这个,你可以循环直到找到一个终止符,然后取出这个子字符串。我通常反对正则表达式,只是因为这是一个棘手的交易。 – Hedron

+0

在语言解析之后,你可以写出这个字符串'“name \ 0password \ 0msg \ 0”'吗? – sln

你只需把括号来单独捕获组,然后逃离\,因为它是在regex.So一个特殊字符的表达应该是这样的:

(\D\w{1,11})\\0(.{1,12})\\0(.*)\\0 

这样做了以后,第一场比赛将包含“名称”,第二个将包含“密码”,第三个将包含“消息”。