通过正则表达式拆分字符串会切断结果的第一个字母

Splitting a string by regex cuts away the first letter of result

本文关键字:结果 第一个 正则表达式 拆分 字符串      更新时间:2023-10-16

考虑代码:

regex boundary{ "\s*\b\s*" };
string test = "foo bart baz-floop";
auto begin = sregex_token_iterator(test.begin(), test.end(), boundary, -1);
for (auto i = begin; i != sregex_token_iterator{}; i++) {
cout << *i << endl;
}

该代码改编自其他答案,旨在通过正则表达式拆分字符串。调用此函数(在 VC++ 16.2.3 上(的结果是:

呜��

亚利桑那州

如何更正代码,以便不删除匹配的第一个字母?我无法更改正则表达式本身。此外,Java 中的类似代码似乎根据我的解释工作:

Pattern boundary = Pattern.compile("\s*\b\s*");
String test = "foo bart baz-floop";
String[] results = boundary.split(test);
for (String result : results) {
System.out.println(result);
}

这是标准库中的一个错误。固定在这里。