Php 使用不同格式的preg_replace和regex

Php 使用不同格式的preg_replace和regex,php,regex,preg-replace,Php,Regex,Preg Replace,我遇到了三种类型的字符串。我的目标是循环浏览所有内容,只需获取name page_1.name page_2.name.text page_1.name.something 我唯一能想到的方法是首先删除页面35;,如下所示: $remove_page = preg_replace("/(page_\d+\.)(\w+)/", "$2", $string); 然后移除最后一位,如下所示: $get_name = preg_replace("/(\w+)(\.\w+)/", "$1", $rem

我遇到了三种类型的字符串。我的目标是循环浏览所有内容,只需获取
name

page_1.name
page_2.name.text
page_1.name.something
我唯一能想到的方法是首先删除
页面35;
,如下所示:

$remove_page = preg_replace("/(page_\d+\.)(\w+)/", "$2", $string);
然后移除最后一位,如下所示:

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

有没有更有效的方法?这是可行的,但我觉得我只是稍微掌握了正则表达式的功能。

您可以使用这个正则表达式:

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

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

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

我在回答中添加了一个解释。即使是
'/page\ud\.\K[^.\n]+/
regex也可以在
\K重置报告匹配的起点时工作。任何以前使用的字符都不再包含在最终匹配中
我在回答中添加了一个解释。即使是
'/page\ud\.\K[^.\n]+/
正则表达式在
\K重置报告匹配的起点时也会起作用。任何以前使用的字符都不再包括在最终匹配中