我有这样的字符串(一些例子):
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);
解释:
正则表达式是两件事之间的交替:
- 你匹配开始直到你遇到
/
包含 -
/
之后的部分,即一次或多次不是数字或新行的全部内容
由于首先检查字符串的开头,因此删除/
要删除/
之后的所有'D
,您可以替换:
(?:/'K|'G(?!^))('d*)'D+
with $1
。如:
preg_replace(',(?:/'K|'G(?!^))('d*)'D+,', '$1', $str);