如何通过正则表达式从 CString 中提取名称?

How to you regex to extract just the name from a CString?

取具有以下定义的CString

CString strNameText = _T("Mr Happy [12]");

我有一系列的名字,所有名字都有 space,数字在末尾是括号。现在我只想从字符串中提取名称。

我意识到我可以找到 " [" 的第一个索引,然后将左侧的文本提取到该索引。但是我可以使用任何正则表达式命令来做同样的事情吗?

我可能会建议在这里替换正则表达式,以删除字符串末尾的括号中的术语。

std::string strNameText ("Mr Happy [12]");
std::regex r ("\s+\[\d+\]$");
std::cout << std::regex_replace (strNameText, r, "");  // Mr Happy

C++ 示例

#include <regex>

CString strNameText = _T("Mr Happy [12]");

std::string s1 = CT2A(strNameText);
std::regex r("\s+\[\d+\]$");
std::string s2 = std::regex_replace(s1, r, "");

return CString(s2.c_str());