如何将一个字符串分成两部分,然后将它们以相反的顺序连接起来作为一个新字符串?

How to split a string into two parts then join them in reverse order as a new string?

这是一个例子:

$str="this is string 1 / 4w";
$str=preg_replace(?); var_dump($str);

我想在这个字符串中捕获 1 / 4w 并将这部分移动到字符串的开头。

Result: 1/4W this is string

给我包含捕获的变量。

最后一部分 1 / 4W 可能不同。

例如1 / 4w 可以是 1/ 16W1 /2W1W2w

字符W可以是大写也可以是小写

如果要捕获子字符串,请使用capture group

$str = "this is string 1 / 4w"; // "1 / 4w" can be 1/ 16W, 1 /2W, 1W, 2w
$str = preg_replace('~^(.*?)(\d+(?:\s*/\s*\d+)?w)~i', " ", $str);
var_dump($str);

没有看到一些不同的示例输入,似乎第一个子字符串中没有数字。为此,我使用否定字符class来捕获第一个子串,省略分隔符space,然后将字符串的其余部分捕获为第二个子串。这使我的模式非常高效(比 Toto 的模式快 6 倍,并且没有残留的白色 space 字符)。

Pattern Demo

代码:

$str="this is string 1 / 4w";
$str=preg_replace('/([^\d]+) (.*)/'," ",$str);
var_export($str);

输出:

'1 / 4w this is string'