当前位置:  开发笔记 > 编程语言 > 正文

正则表达式替换: 到":"等

如何解决《正则表达式替换:到":"等》经验,为你挑选了1个好方法。

我有一堆像以下一样的字符串:

"Hello, here's a test colon:. Here's a test semi-colon;"

我想替换它

"Hello, here's a test colon:. Here's a test semi-colon;"

等等所有可打印的ASCII值.

目前我正在使用boost::regex_search匹配&#(\d+);,在我依次处理每个匹配时构建一个字符串(包括追加自我找到的上一个匹配以来没有匹配的子字符串).

谁能想到更好的方法呢?我对非正则表达式方法持开放态度,但在这种情况下,正则表达式似乎是一种合理的方法.

谢谢,

大教堂



1> MSalters..:

使用正则表达式的一大优势是处理棘手的情况,例如&实体替换不是迭代的,这只是一个步骤.正则表达式也相当有效:两个主角是固定的,所以它会很快跳过任何不开头的东西&#.最后,正则表达式解决方案是未来维护者没有太多惊喜的解决方案.

我说正则表达式是正确的选择.

它是最好的正则表达式吗?你知道你需要两个数字,如果你有3个数字,第一个将是1.打印ASCII毕竟是 -~.出于这个原因,你可以考虑?\d\d;.

至于替换内容,我将使用为boost :: regex :: replace描述的基本算法:

For each match // Using regex_iterator<>
    Print the prefix of the match
    Remove the first 2 and last character of the match (&#;)
    lexical_cast the result to int, then truncate to char and append.

Print the suffix of the last match.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有