2016-08-20 167 views
-1

我創建了一個簡單的聊天提升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

回答

1

你只需把括號來單獨捕獲組,然後逃離\,因爲它是在regex.So一個特殊字符的表達應該是這樣的:

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

這樣做了以後,第一場比賽將包含「名稱」,第二個將包含「密碼」,第三個將包含「消息」。