提取字符串的最后一部分

时间:2013-06-24 07:22:16

标签: php regex

我有一个这样的字符串:

[numbers]firstword[numbers]mytargetstring

我想知道如何考虑以下内容来提取“targetstring”:

a。)数字是数字,例如,我的完整字符串,带数字:

12firstword21mytargetstring

b。)数字可以是任何数字,例如上面各有两位数,但它可以是任意数量的数字,如下所示:

123firstword21567mytargetstring

无论数字位数如何,我只对提取“mytargetstring”感兴趣。

顺便说一下,“firstword”是固定的,任何组合都不会改变。

我在Regex中不是很好,所以我感谢有背景的人可以建议如何使用PHP来做到这一点。非常感谢你。

6 个答案:

答案 0 :(得分:2)

preg_match("/[0-9]+[a-z]+[0-9]+([a-z]+)/i", $your_string, $matches);
print_r($matches);

答案 1 :(得分:2)

这样做(或应该做)

$input = '12firstword21mytargetstring';

preg_match('/\d+\w+\d+(\w+)$/', $input, $matches);

echo $matches[1]; // mytargetstring

它分解为

\d+\w+\d+(\w+)$

\d+ - 一个或多个号码

\w+ - 后跟一个或多个单词字符

\d+ - 后跟一个或多个数字

(\w+)$ - 后跟一个或多个以字符串结尾的单词字符。括号将此标记为您要提取的组

答案 2 :(得分:2)

您可以使用preg_matchpattern syntax来完成此操作。

$string ='2firstword21mytargetstring';
if (preg_match ('/\d(\D*)$/', $string, $match)){
//                       ^ -- end of string
//                     ^   -- 0 or more
//                   ^^    -- any non digit character
//                ^^       -- any digit character                      
    var_dump($match[1]);}

答案 3 :(得分:1)

试试吧,

print_r(preg_split('/\d+/i', "12firstword21mytargetstring"));
echo '<br/>';
echo 'Final string is: '.end(preg_split('/\d+/i', "12firstword21mytargetstring"));

http://writecodeonline.com/php/

上进行测试

答案 4 :(得分:1)

你不需要正则表达式:

for ($i=strlen($string)-1; $i; $i--) {
   if (is_numeric($string[$i])) break; 
}

$extracted_string = substr($string, $i+1);

高于它可能是你可以获得更快的实现,当然比使用正则表达式更快,这对于这个简单的情况你不需要。

请参阅working demo

答案 5 :(得分:0)

你的简单解决方案就在这里: -

$keywords = preg_split("/[\d,]+/", "hypertext123language2434programming");
echo($keywords[2]);