正则表达式错误缺少终止]

 蓬从蓉Tahirah 发布于 2023-02-13 16:28

我正在使用gskinner regex帮助程序站点从字符串中捕获日期,它工作正常.但我的PHP脚本中的抛出和错误.

我正在寻找的是字符串中的日期.

2013年11月26日晚上10:17

$string = "The following web lead was received at Nov 26 2013 10:17PM Source: 420 Source: Internet - Organic (Free) Leads Referral Fee:  none";  

$datePattern = '/(?<=received at )(?:[^])*?(?=Source)/';
preg_match($datePattern,$string,$matches);
print_r($matches);

我得到的错误是

警告:preg_match():编译失败:缺少终止]对于第114行C:\ wamp\www\test\index.php中偏移36处的字符类

我不明白为什么它在gskinner工具中工作正常但在我的脚本中失败了.这个正则表达式是社区提交的表达式之一,因为我在正则表达式方面完全不称职.

谢谢你的帮助.

1 个回答
  • 这是因为[^].

    有些javascript实现[^]意味着文字"所有可能的字符"(否定无效).但是在php中,如果它在开始括号或否定符号之后立即立即显示为正方形括号^.因此[^])*?(?=Source)被视为未闭合的角色类.

    此表示法的目的是匹配所有可能的字符(一种快捷方式[\s\S]),您可以将其替换为:

    $datePattern = '/(?<=received at ).*?(?=Source)/s';
    

    您可以在这篇令人难以置信的帖子中阅读有关这类符号的更多信息.

    2023-02-13 16:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有