Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Preg(正则表达式)从字符串中提取最后一个值?不像我想的那么简单_Php_Regex_Pcre - Fatal编程技术网

PHP Preg(正则表达式)从字符串中提取最后一个值?不像我想的那么简单

PHP Preg(正则表达式)从字符串中提取最后一个值?不像我想的那么简单,php,regex,pcre,Php,Regex,Pcre,我试图使用PHP preg提取下面字符串末尾的整数,在示例中是“4”,但可以是“INBOX/”后面的任何数字,也可以是testtester1010@mydomain.com“是一个变量,因此它可以是任何地址 我从中提取的字符串: /m/testtester1010@mydomain.com/文件夹/收件箱/4 /串 我一直在讨论这个问题,我想我真的不知道怎么做,我在搜索中找到的正则表达式示例似乎没有解决类似的问题,我非常感谢任何帮助 注:如果有人知道一个好的regex软件用于构建这样的查询(用于

我试图使用PHP preg提取下面字符串末尾的整数,在示例中是“4”,但可以是“INBOX/”后面的任何数字,也可以是testtester1010@mydomain.com“是一个变量,因此它可以是任何地址

我从中提取的字符串:

/m/testtester1010@mydomain.com/文件夹/收件箱/4

/串

我一直在讨论这个问题,我想我真的不知道怎么做,我在搜索中找到的正则表达式示例似乎没有解决类似的问题,我非常感谢任何帮助

注:如果有人知道一个好的regex软件用于构建这样的查询(用于提取),我会很感激让我知道,因为我最近花了无数个小时与regex在一起,但仍然没有找到一个似乎在这方面有帮助的软件。。谢谢

使用:

#/([^/]*)$#

preg_match('#/([^/]*)$#', $str, $matches);
我们首先检查斜线。然后,捕获组为零个或多个非斜杠字符。然后,字符串的末尾
$matches[1]
保存结果。

使用:

#/([^/]*)$#

preg_match('#/([^/]*)$#', $str, $matches);

我们首先检查斜线。然后,捕获组为零个或多个非斜杠字符。然后,字符串的末尾
$matches[1]
保存结果。

为什么不简单地匹配
\d+$
-这将匹配任何尾随数字

if (preg_match('/\d+$/', $subject, $match)) {
    $result = $match[0];
} else {
    $result = "";
}
如果要匹配最后一个斜杠后的任何内容(即使不是数字),只需使用
[^/]+$

preg_match('#[^/]+$#', $subject, $match)

为什么不简单地匹配
\d+$
-这将匹配任何尾随数字

if (preg_match('/\d+$/', $subject, $match)) {
    $result = $match[0];
} else {
    $result = "";
}
如果要匹配最后一个斜杠后的任何内容(即使不是数字),只需使用
[^/]+$

preg_match('#[^/]+$#', $subject, $match)

是否确定字符串末尾总是有一个数字?如果不是,您希望发生什么-如果正则表达式不匹配,或者不管它是否匹配最后一个斜杠之后的所有内容?是否确定字符串的末尾总是有一个数字?如果不是,您希望发生什么-正则表达式是否无法匹配,或者是否应该匹配最后一个斜杠之后的所有内容?