例如:Found: 84 Displaying: 1 - 84
我希望84
和Found
之间的数字Displaying
与preg_match
取出,但我在正则表达方面非常糟糕。
你知道学习正则表达的好教程吗?我在Google上找不到一个好的。
编辑 从以下评论中插入:
我只是在这里简化我的问题。我会在一个完整的HTML页面中找到它的真正问题,例如谷歌搜索。你知道我的意思吗?
答案 0 :(得分:3)
如果您的输入始终采用相同的格式,则无需使用正则表达式。相反,只需将字符串拆分为空格:
// explode() on spaces, returning at most 2 array elements.
$parts = explode(" ", "Found: 84 Displaying: 1 - 84", 2);
echo $parts[1];
更新如果你真的真的想使用preg_match()
,请按照以下方法进行操作。不建议将此用于此应用程序。
// Array will hold matched results
$matches = array();
$input = "Found: 84 Displaying: 1 - 84";
// Your regex will match the pattern ([0-9]+) (one or more digits, between Found and Displaying
$result = preg_match("/^Found: ([0-9]+) Displaying/", $input, $matches);
// See what's inside your $matches array
print_r($matches);
// The number you want should be in $matches[1], the first subgroup captured
echo $matches[1];
答案 1 :(得分:1)
相当简单的正则表达式,我包含了使用它的PHP代码:
<?php
preg_match("/(\d+)/", "Found: 84 Displaying: 1 - 84", $matches);
//$matches[0] should have the first number, i.e. 84
echo $matches[0]; // outputs "84"
?>
http://www.regular-expressions.info/有一些关于如何编写正则表达式的非常好的信息。
编辑:如上所述,正则表达式在这种情况下是过度的,令牌化工作正常。