我有以下代码在正则表达式上拆分字符串:
if (\is_float($value)) {
$repr = (string) $value;
if (is_infinite($value)) {
$repr = str_ireplace('INF', '.Inf', $repr);
} elseif (floor($value) == $value && $repr == $value) {
// Preserve float data type since storing a whole number will result in integer value.
$repr = '!!float '.$repr;
}
} else {
$repr = \is_string($value) ? "'$value'" : (string) $value;
}
应该拆分并保留:
string s = "test;3 régred";
string[] authorsList = Regex.Split(s, "(\\s+)|([\\p{P}\\p{S}])");
foreach (string q in authorsList)
{
Console.WriteLine(q);
}
test
3
但是它正在存储
régred
test
;
3
*space*
为什么不丢失定界符?
答案 0 :(得分:3)
您使用(...)
将分隔符放入捕获组。删除它们,它将正常工作:
string[] authorsList = Regex.Split(s, @"\s+|[\p{P}\p{S}]");
输出:
供参考测试
3
régred