使用格式不同的preg_replace和regex

时间:2015-07-16 14:16:25

标签: php regex preg-replace

我遇到过三种类型的字符串。我的目标是遍历所有这些并获得name

page_1.name
page_2.name.text
page_1.name.something

我能做到这一点的唯一方法是首先删除page_#以下内容:

$remove_page = preg_replace("/(page_\d+\.)(\w+)/", "$2", $string);

然后删除最后一位:

$get_name = preg_replace("/(\w+)(\.\w+)/", "$1", $remove_page);

有更有效的方法吗?这有效,但我觉得我只是略微掌握了正则表达式的力量。

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

preg_match('/(?<=page_\d\.)[^.]+/', $input, $matches);

(?<=page_\d\.)是一个值得关注的内容,可以确保我们的匹配符号在<{1}}前面和一个数字。 page_将匹配一个或多个不是DOT的字符。

RegEx Demo

否则由DOT分割并取第一个元素:

[^.]+