正则表达式末尾的 Php 前瞻断言


Php lookahead assertion at the end of the regex

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

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

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

谢谢

在前瞻中使用锚点$

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

正则表达式演示

您不能在正面展望之外使用$,因为您的号码不在输入的末尾,并且后面有一个'.1