【发布时间】:2018-11-02 04:37:55
【问题描述】:
我发现这个正则表达式可以替换 Regex replace uppercase with lowercase letters
Find: (\w) Replace With: \L$1
我的代码
string s = "ABC";
cout << std::regex_replace(s, std::regex("(\\w)"), "\\L$1") << endl;
在 Visual Studio 2017 中运行。
输出:
\LA\LB\LC
如何在 C++ 中编写小写函数标记?
【问题讨论】:
-
据我所知,小写是 Perl 风格的正则表达式独有的。 C++ 没有 Perl 风格的正则表达式语法选项,所以我猜它不能。当然,它对于文本编辑器中的即时更改很有用,但是您有一个字符串并且您有适用于字符串的算法,所以我不明白这一点。
-
@xskxzr,因为我的目的很复杂。不是简单地替换所有字符。像这样的“我不想……”,我想替换“不”,而不是“我”。正则表达式可以轻松做到这一点。
-
AFAIK,没有像 C++ 中的
\L$1这样的魔法。最好的方法可能是使用对每个字符应用 tolower() 的 lambda 来提升 regex_replace。或者你可以在这里使用类似的技术:stackoverflow.com/questions/22617209/…