为了账号安全,请及时绑定邮箱和手机立即绑定

负后视正则表达式在 PHP 中不起作用

负后视正则表达式在 PHP 中不起作用

PHP
哆啦的时光机 2023-03-04 15:01:47
我用 PHP 编写了一段代码,旨在匹配一个副词(以“ly”结尾的单词),该副词不应匹配任何单词 daily、weekly、monthly、bi-daily、bi-weekly 等。例如,给定句子Locally meet daily for 3 days, only Locallyshould match。我使用负向后看确定了 Regex 语法,但 PHP 向我抛出一个错误:编译失败:lookbehind 断言在偏移处不是固定长度..这是我在 PHP 中的完整代码:<?php$sentence = "Locally meet daily for next 3 days";// Use preg_match() function to check match preg_match('/(\w+ly)(?<!(daily|weekly|monthly))/', $sentence, $matches, PREG_OFFSET_CAPTURE); // Display matches result print_r($matches); 我试过负面前瞻,但它并没有给我带来可喜的结果。有人会建议可以做什么吗?谢谢
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

您可以使用否定前瞻,但它需要在您的匹配组之前。您还需要在正则表达式的开头添加一个断字 ( \b) 断言,以便(例如)正则表达式不匹配ailyin daily,另一个在末尾,这样您就不会ly在中间匹配单词 with 例如newlywed:


$sentence = "Locally meet daily newlywed for next 3 days";


preg_match_all('/\b(?!(?:daily|weekly|monthly))(\w+ly)\b/', $sentence, $matches, PREG_OFFSET_CAPTURE); 


print_r($matches); 

输出:


Array

(

    [0] => Array

        (

            [0] => Array

                (

                    [0] => Locally

                    [1] => 0

                )

        )

    [1] => Array

        (

            [0] => Array

                (

                    [0] => Locally

                    [1] => 0

                )

        )

)

3v4l.org 上的演示


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号