gpt4 book ai didi

c++ - 使用正则表达式为每个连续的大写字符附加一个 '.'

转载 作者:行者123 更新时间:2023-11-30 01:03:12 27 4
gpt4 key购买 nike

I Foo bar DNA

我想将 DNA 替换为 D.N.A(D.N.A. 也可以),但不想替换“I”和“Foo”。

我有一些线索,但都失败了。

string s = "I Foo bar DNA";
cout << std::regex_replace(s, std::regex("([A-Z]){2,}"), "$1.") << endl;
//output: I Foo bar A.

cout << std::regex_replace(s, std::regex("([A-Z])[A-Z]"), "$1.") << endl;
//output: I Foo bar D.A

最佳答案

你可以使用

([A-Z])(?=[A-Z])

替换为 $1.

参见 regex demo

这里,

  • ([A-Z]) - 匹配任何 ASCII 大写字母并将其捕获到第 1 组
  • (?=[A-Z]) - 前瞻确保在前一个字母之后有一个 ASCII 大写字母,但将匹配的字符保留在整体匹配值之外。

C++ demo :

std::string s("I Foo bar DNA");
std::regex reg("([A-Z])(?=[A-Z])");
std::cout << std::regex_replace(s, reg, "$1.") << std::endl;
// => I Foo bar D.N.A

关于c++ - 使用正则表达式为每个连续的大写字符附加一个 '.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54361059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com