在正则表达式结束时Php前瞻性断言

时间:2014-12-15 09:05:31

标签: php regex regex-lookarounds

我想写一个带有断言的正则表达式从字符串unknownstring/55.1中提取数字55,这是我的正则表达式

    $str = 'unknownstring/55.1';
    preg_match('/(?<=\/)\d+(?=\.1)$/', $str, $match);

所以,基本上我试图说给我斜线后面的数字,然后是一个点和数字1,之后就没有字符了。但它与正则表达式不匹配。我只是尝试从最后删除$符号并且匹配。但是这个条件是必不可少的,因为我需要将它作为字符串的结尾,因为unknownstring部分可以包含类似的文本,例如unknow/545.1nstring/55.1。也许我可以使用preg_match_all,并进行最后一场比赛,但我想理解为什么第一个正则表达式不起作用,我的错误在哪里。

由于

1 个答案:

答案 0 :(得分:3)

在前瞻中使用锚$

(?<=\/)\d+(?=\.1$)

RegEx Demo

你不能在积极前瞻之外使用$,因为你的号码不在输入的末尾,并且有一个\.1