Regex对新手的帮助


Regex assistance to a newbie

这是我的代码:

$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('/'/(+s)'//i','',$searchTerm);

我正在尝试从$searchTerm中删除/9j/

它是一个斜杠,然后是一组没有空格的字符和整数,然后是斜杠

我的表情有什么不对的地方?

$newTerm = preg_replace('#/[a-z0-9]+/#i', '', $searchTerm);

/分隔符替换为其他内容(在我的示例中为#)只会使其更易于阅读,尤其是当您的模式恰好包含/字符时。使用另一个分隔符意味着您不需要转义斜杠。

您应该使用.* 更改+s

此外,不需要i

$newTerm = preg_replace('/'/(.*)'//', '', $searchTerm);

此处测试:http://regexpfiddle.com/

我不确定+s是从哪里得到的,因为它在regex中有任何意义。

就我个人而言,我建议这样做:

$searchTerm = explode("/",$searchTerm,3)[2];

但请注意,这只适用于最新的PHP。对于旧版本,您需要:

$searchTerm = explode("/",$searchTerm,3);
$searchTerm = $searchTerm[2];

如果你想要一个正则表达式,试试这个:

$searchTerm = preg_replace("(^/[^/]+/)","",$searchTerm);

这个正则表达式使用括号作为分隔符(如果使用括号,则永远不必转义任何内容以避免冲突,因为它们成对出现),它从字符串的开头开始,查找斜杠,然后查找任何非斜杠的内容,然后是第二个斜杠,然后将其全部删除。

尝试不同的分隔符:

preg_replace('~/'w+/~','',$term);

试试这个:

preg_replace('#/.*/#', '', $searchTerm);
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('~^/'S+/~','',$searchTerm);