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

时间:2017-07-03 11:01:31

标签: php string preg-replace substring capture-group

这是一个例子:

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

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

  

结果:1/4W this is string

请给我包含捕获的变量。

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

e.g。 1 / 4w可以是1/ 16W1 /2W1W2w

字符W可以是大写字母或小写字母。

2 个答案:

答案 0 :(得分:0)

如果要捕获子字符串,请使用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', "$2 $1", $str);
var_dump($str);

答案 1 :(得分:0)

如果没有看到一些不同的样本输入,似乎第一个子字符串中没有数字。出于这个原因,我使用一个否定的字符类来捕获第一个子字符串,省略分隔空间,然后捕获字符串的其余部分作为第二个子字符串。这使我的模式非常有效(比Toto快6倍,没有逗留白色空格字符)。

Pattern Demo

代码:

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

输出:

'1 / 4w this is string'