我试图采取字符串,如:
$search = "Bob Loblaw + Mark Hamill RT45_part12 foo_092344"
并删除所有非字母数字字符,除非下划线位于RT45_part12。
我想要的结果应该是:"Bob Loblaw Mark Hamill RT45_part12 foo 092344"
preg_replace ("/[^ A-Za-z0-9 _]/", ' ', $ 搜索)
查找RT45_part12的正则表达式为
b [a-zA-Z] {2,4} [0 - 9] {1, 5} _part [0 - 9] {1, 5} b
我不知道如何将这两个组合起来,以便它跳过RT45_part12中的下划线,而是替换derrick后面的下划线。我是否需要使用向前看、向后看的功能?
限制够了吗?
echo preg_replace ( "~[^w ]++|_(?!partd{1,5}b)~i", " ", $mystring);
但如果你想要确定,使用:
echo preg_replace ( "~[^w ]++|(b[a-z]{2,4}d{1,5}_partd{1,5}b)|_~i", "$1 ", $mystring);
希望对您有所帮助
$search = "Bob Loblaw + Mark Hamill RT45_part12 foo_092_34_4";
echo preg_replace("/[^a-zA-Z0-9 ]|(RT45_part12)/", '$1', $search);
//Bob Loblaw Mark Hamill RT45_part12 foo092344
或
echo preg_replace("/[^a-zA-Z0-9 ]|([a-zA-Z]{2,4}[0-9]{1,5}_part[0-9]{1,5})/", '$1', $search);
update(非字母数字字符到空格)(它只适用于在RT45_part12之后有空格)
echo preg_replace("/[^a-zA-Z0-9 ]|([a-zA-Z]{2,4}[0-9]{1,5}_part[0-9]{1,5}) /", '$1 ', $search);