2017-09-13 600 views
-2

它匹配\ r \ n之间的所有内容。我只想匹配\ r \ n之间的数字并替换为“”。正则表达式匹配回车和换行内的数字

regex: [^\r\n\d$\r\n] 
Matching: 
    abc\r\n123\r\nabc\r\n 
Doesnot match: 
    \r\n\r\n 
    \r\nasaas\r\n 

正则表达式说,以上所有匹配。 这对删除从套接字接收到的数据包数据中的块长度非常有用。我想删除分块数据包中的数据包长度并准备一个合适的XML。

+1

您应该直接在您的问题中包含所有相关信息。链接应该是补充的。 – chris

+0

既然你只有一个数字 - 它根本不应该匹配 –

+1

如果你正在实现分块传输模式,你应该真的在使用一个已经为你实现的库,比如'HttpURLConnection',Apache HTTP客户端等。 – EJP

回答

-3

从纯粹的正则表达式的角度来看自己孤立于行号:我想你想要这样的:

(\n\d+\n)|(^\d+\n)|(\n\d+$) 

作为C++字符串:"(\\n\\d+\\n)|(^\\d+\\n)|(\\n\\d+$)"或者干脆R"((\n\d+\n)|(^\d+\n)|(\n\d+$))"

更新。正如其他人所指出的,正则表达式可能不是解析HTTP流最合适的工具。但从正则表达式看,我会支持这个答案。

+2

等一下。正则表达式库是否无条件地将行结束符处理为特殊的?理由#42953远离正则表达式(FWIW,[我不认为这是真的](http://coliru.stacked-crooked.com/a/7088761318d3d9fb)) – sehe

+0

是'^ \ d'甚至没有' []'? – wilx