我想写一个带有断言的正则表达式来从字符串 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
。