2013-08-21 49 views
1

有沒有「準備好的方式」/庫來從正則表達式模式中提取使用sprintf()std::cout的模式?正則表達式模式的反向應用使用

對於正則表達式驗證我使用 「regex.h」

和存儲驗證的模式,例如:

"A((\\+|\\-)(\\d|\\.){6})\\r" 
"G((\\+|\\-)(\\d|\\.){6})\\r" 

我想有像"A+%06f""G+%06f"

+1

沒有辦法做到這一點,但對於簡單的情況下,你可以自己寫。這個答案在[A +]正則表達式中:http://stackoverflow.com/a/28862668/2642059 –

回答

0

當我在運行時構建一個正則表達式時,我經歷過的(某些版本的GNU libc)似乎做出了許多內存分配,使得它對於簡單模式(如格式說明符)效率低下,所以我懷疑實際的C庫實現將使用regex.h作爲格式說明符,這反過來又使得您搜索的函數不太可能存在。

此外,您的正則表達式似乎與字符串(如"A+......")匹配,這些字符串與您提供的任何格式說明符都不匹配。

+0

不,它似乎不匹配諸如「A + ......」之類的字符串。而regex.h是POSIX,而不是某種版本的GNU libc。問題不在於libc中存在這樣的函數。 – Maquefel

+0

@Maquefel:'(\ d | \。){6}'匹配「......」,[示例](http://regexpal.com/?flags = g&regex =%28 \ d | \。 %29 {6}&輸入= ......%201.2345)。 – Zeta

+0

@澤塔 - 是的。如果問題不明確,我可以澄清。問題不是關於匹配模式的事情,而是關於一個現成的庫,它可以識別模式中的(\\ + | \\ - )\\ d {6}並替換爲%+ 06d。如果有人知道這樣的lib的存在,他會提供關於它的信息。 – Maquefel