Regexp for preg_replace in PHP


Regexp for preg_replace in PHP

我有这样的字符串(一些例子):

 F7998FM3213/02F
 J442554NM/05
 K439459845/34D

我需要使用PHP与preg_replace和正则表达式来删除任何字符串中的所有非数字字符,在正斜杠,'/'之后。

例如,上面的代码在后面看起来像这样:
F7998FM3213/02
J442554NM/05
K439459845/34

如果你想提高可读性,像这样的东西将是完美的:

$parts = explode("/",$line,2);
$parts[1] = preg_replace("/'D/","",$parts[1]);
$output = implode("/",$parts);

然而,为了简洁,并完全基于你给出的例子,试着这样做:

$output = preg_replace("/'D+$/","",$input);

这将从字符串的末尾剥离任何非数字字符,根据您的示例,这似乎是您所追求的。

你可以这样做:

$subject = <<<LOD
F7998FM3213/02F
J442554NM/05
K439459845/34D
K439459845/34D34
LOD;
echo preg_replace('~^[^/]*+/'K|[^'d'n]++~m', '', $subject);

解释:

正则表达式是两件事之间的交替:

  1. 你匹配开始直到你遇到/包含
  2. /之后的部分,即一次或多次不是数字或新行的全部内容

由于首先检查字符串的开头,因此删除/

之后的所有非数字字符

要删除/之后的所有'D,您可以替换:

(?:/'K|'G(?!^))('d*)'D+

with $1。如:

preg_replace(',(?:/'K|'G(?!^))('d*)'D+,', '$1', $str);