这是一个例子:
$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/ 16W
,1 /2W
,1W
或2w
字符W
可以是大写字母或小写字母。
答案 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倍,没有逗留白色空格字符)。
代码:
$str="this is string 1 / 4w";
$str=preg_replace('/([^\d]+) (.*)/',"$2 $1",$str);
var_export($str);
输出:
'1 / 4w this is string'