首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

preg_match_all -从搜索php中排除一个单词

preg_match_all 是 PHP 中的一个正则表达式函数,用于在字符串中查找所有匹配正则表达式的子串,并将它们存储在数组中。如果你想从搜索结果中排除一个单词,可以使用正则表达式的否定预查(negative lookahead)功能。

基础概念

否定预查是一种正则表达式构造,它允许你定义一个模式,该模式只有在后面不跟随另一个特定模式时才匹配。否定预查的语法是 (?!pattern),其中 pattern 是你不希望跟随的模式。

相关优势

  • 灵活性:正则表达式提供了强大的文本处理能力,可以精确地匹配和排除复杂的模式。
  • 效率:一旦正则表达式被编译,它可以高效地处理大量文本数据。

类型

  • 正向预查(?=pattern),匹配后面跟随特定模式的字符串。
  • 负向预查(?!pattern),匹配后面不跟随特定模式的字符串。

应用场景

  • 数据验证:在表单提交时验证用户输入。
  • 文本处理:在文本中查找或排除特定的单词或模式。
  • 日志分析:从日志文件中提取或排除特定的信息。

示例代码

假设你想在一个字符串中查找所有的 URL,但是要排除掉包含 "example" 的 URL,可以使用以下代码:

代码语言:txt
复制
<?php
$text = "Here are some URLs: http://example.com, http://test.com, http://another-example.com";
$pattern = '/https?:\/\/(?!.*example).*?(?=\s|$)/i';

preg_match_all($pattern, $text, $matches);

print_r($matches[0]);
?>

解释

  • https?:\/\/:匹配以 "http://" 或 "https://" 开头的字符串。
  • (?!.*example):否定预查,确保后面不跟随包含 "example" 的字符串。
  • .*?:非贪婪匹配任意字符,直到遇到下一个条件。
  • (?=\s|$):正向前查,确保匹配的字符串后面是空白字符或字符串结尾。

参考链接

通过这种方式,你可以精确地控制 preg_match_all 函数的行为,以满足你的特定需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP正则表达式_python正则匹配字母

---- 二、正则表达式的元素 介绍   1、正则表达式包含三种元素分别为:量词、元字符、修饰符   2、前导字符串:就是符号前面的一个字符或字符串 量词 量词 说明 + 匹配任何至少包含一个前导字符串...\B 匹配没有到达了单词边界 \ 匹配正则的特殊字符 //元字符 echo preg_match('/[a-z]/','abc');//返回1 echo preg_match('/[A-Z]/'.../结果为Array ( [0] => Array ( [0] => 1a ) ) //默认从头到尾匹配,所以只匹配到一个 preg_match_all('/^1a/m',$str,$arr);//返回1...( [0] => php123php [1] => php456php ) ) //禁止贪婪匹配后,会就近匹配 ---- 三、Perl风格函数 1、preg_grep()   搜索数组的所有元素...,返回与某个模式匹配的字符串数组 2、preg_match()   搜索模式,匹配返回true,不匹配返回false 3、preg_match_all()   在字符串匹配模式的所有出现,然后将所有匹配的全部放入数组

2.7K20

15个实用的PHP正则表达式

对于开发人员来说,正则表达式是一个非常有用的功能,它提供了 查找,匹配,替换 句子,单词,或者其他格式的字符串。这篇文章主要介绍了15个超实用的php正则表达式,需要的朋友可以参考下。..."; } 从一个字符串 突出某个单词 这是一个非常有用的在一个字符串匹配出某个单词 并且突出它,非常有效的搜索结果 $text = "Sample sentence from KomunitasWeb...,而这里是一个更好的方式去执行搜索在某个WordPress的博客上打开你的文件 search.php ,然后找到 方法 the_title() 然后用下面代码替换掉它 echo $title; Now...Append the following line to it: strong.search-excerpt { background: yellow; } HTML文档获得全部图片 如果你曾经希望去获得某个网页上的全部图片...php $szPostContent = $post->post_content; $szSearchPattern = '~]* />~'; // Run preg_match_all

71210
  • PHP正则表达式

    正则表达式 1、正则表达式包含三种元素分别为:量词、元字符、修饰符 2、前导字符串:就是符号前面的一个字符或字符串 量词 说明 + 匹配任何至少包含一个前导字符串 * 匹配任何包含零个或多个前导字符串...\B 匹配没有到达了单词边界 \ 匹配正则的特殊字符  //元字符   echo preg_match('/[a-z]/','abc');//返回1   echo preg_match(...> php123phpphp456php ) )  ​   preg_match_all('/php\w+php/U','php123phpphp456php',$arr);   print_r...()   preg_match_all('/php[0-9]/','php5php6php7',$arr);   print_r($arr);   //结果为Array ( [0] =...您必须在下载后的24个小时之内,您的电脑或手机彻底删除上述内容。 如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我联系处理。敬请谅解!

    1.6K10

    正则表达式的使用

    正则表达式在php的使用 php中支持正则表达式的函数 preg_filter 执行正则表达式搜索和替换 preg_grep 返回匹配模式的数组条目 preg_last_error...preg_split 通过一个正则表达式分隔字符串 php的PREG常量 PREG_PATTERN_ORDER 结果按照”规则”排序,仅用于preg_match_all(), 即$matches...预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是包含预查的字符之后开始。 (?!...预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是包含预查的字符之后开始。 (?...\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配”never” 的 ‘er’,但不能匹配 “verb” 的 ‘er’。 \B 匹配非单词边界。’

    91520

    PHP中正则的使用

    正则表达式,作为一种快速、便捷的处理字符串的工具,在各种编程语言中都有着广泛的用途,通过在PHP的一些使用,下面记录一下关于PHP中正则使用的一些技巧。...PHP的正则函数: php中有两套正则函数,两者功能差不多,分别为: 一套是由PCRE(Perl Compatible Regular Expression)库提供的。...使用以“ereg_”为前缀命名的函数;(POSIX的正则函数库,自PHP 5.3以后,就不在推荐使用,PHP6以后,就将被移除) 由于POSIX正则即将推出历史舞台,并且PCRE和perl的形式差不多.../   匹配头为is的字符串   /is\b/   匹配尾为is的字符串   /\bis\b/ 定界 \B       匹配除单词边界之外的任意字符   /\Bis/   匹配单词“This”的“is...="http.php" target="qwerqwerq">';     $match = '';     preg_match_all('/\s+action=\"(?!

    3.7K30

    正则表达式学习笔记

    (匹配0次或1次)、+(匹配1次或多次)、[](括号内的内容匹配其中一个一次)、{m,n}(匹配m至n次,n省略则匹大于或等于m次,逗号也省略则匹配m次)。...re)\b会匹配任意不是以re开头的单词。 上述内容,3)、4)又称为负向零宽断言。 3、注释 (?#comment)表示注释,不会被解析,仅仅是便于其他人员查看正则表达式。...该函数匹配成功一次后,会匹配成功的最后一个位置开始,继续往后匹配。...实际工程,为了项目统一,最好定一个一致的号码。...[^>]+> 3、URL重定向 在Apache和Nginx,经常需要配置url的rewrite,可以把php后缀的文件重定向到html后缀的文件,这样做便于搜索引擎的检索。

    1.2K120

    PHP正则表达式笔记与实例详解

    本文实例讲述了PHP正则表达式笔记与实例。分享给大家供大家参考,具体如下: 这里主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己已经忘记的差不多了,囧啊!...被匹配的字串",存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量)         其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置               起始偏移量:指定位置开始匹配...非贪婪模式尽可能少的匹配所搜索的字符串,而默认 的贪婪模式则尽可能多的匹配所搜索的字符串。 . 匹配除 "n" 之外的任何单个字符。...b 匹配一个单词边界,也就是指单词和空格间的位置。 B 匹配非单词边界。 cx 匹配由x指明的控制字符。 d 匹配一个数字字符。等价于 [0-9]。 D 匹配一个非数字字符。等价于 。...t 匹配一个制表符。等价于 x09 和 cI。 v 匹配一个垂直制表符。等价于 x0b 和 cK。 w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 W 匹配任何非单词字符。

    1.1K00

    PHP正则表达式笔记与实例详解

    preg_match(“正则表达式”,”被匹配的字串”,存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量) 其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置 起始偏移量:指定位置开始匹配...category.php?...非贪婪模式尽可能少的匹配所搜索的字符串,而默认 的贪婪模式则尽可能多的匹配所搜索的字符串。 . 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[....\b 匹配一个单词边界,也就是指单词和空格间的位置。 \B 匹配非单词边界。 \cx 匹配由x指明的控制字符。 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。...\t 匹配一个制表符。等价于 \x09 和 \cI。 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]’。

    2.8K40

    PHP核心技术与最佳实践 读书笔记 第三章 正则表达式基础与应用

    3.1.1 PHP的正则函数 NFA和DFA PHP有两套正则函数 :PCRE库的 preg_ 和POSIX扩展的ereg_(不推荐) 3.1.2 正则表达式的组成 分隔符,表达式和修饰符...\b 是正则表达式规定的一个特殊代码,代表单词的开头或者结尾,也就是单词的分界处。...匹配除换行符以外的任何字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 - 表示范围 [] 匹配括号的任意一个字符...转义符\ \Q和\E也可以在模式忽略正则表达式元字符 \Q和\E之间的元字符都会作为普通字符来匹配 $reg="#[aby\{]#"; $str='a\bc[]{}'; preg_match_all...] 匹配除了aeiou这几个字符以外的任意字符 3.3.4 分支 |表示分支 3.3.5 分组 重复一组字符 用 (表达式) 3.3.6 反向引用 反向引用用于重复搜索前面某个分组匹配的文本

    63310

    PHP中正则表达式学习及应用

    正则表达式元字符 * 匹配前一个内容的0次1次或多次 . 匹配内容的0次1次或多次,但不包含回车换行 + 匹配前一个内容的1次或多次 ?...匹配前一个内容的0次或1次 | 选择匹配类似PHP的| (因为这个运算符合是弱类型导致前面最为整体匹配) ^ 匹配字符串首部内容 $ 匹配字符串尾部内容 \b 匹配单词边界,边界可以是空格或者特殊符合...\B 匹配除带单词边界意外内容 {m} 匹配前一个内容的重复次数为M次 {m,} 匹配前一个内容的重复次数大于等于M次 {m,n} 匹配前一个内容的重复次数M次到N次 ( ) 合并整体匹配,...匹配的时候 x 忽略正则的空白 A 强制从头开始匹配 D 强制$匹配尾部无任何内容 \n U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束, 常用在采集程序上的正则表达式 preg_match_all...全部匹配函数 preg_match_all ( string pattern, string subject, array matches [, int flags] )用途:截取比较详细的内容,采集网页

    1K80

    PHP正则表达式处理函数(PCRE 函数)实例小结

    分享给大家供大家参考,具体如下: 有时候在一些特定的业务场景需要匹配,或者提取一些关键的信息,例如匹配网页的一些链接, 提取一些数据时,可能会用到正则匹配。...下面介绍一下php的一些常用的正则处理函数。 一、preg_replace(pattern,replacement, 执行一个正则表达式的搜索和替换。 <?...输出 Array ( [0] = 团购商品 [1] = https://www.baidu.com ) 三、preg_match_all(pattern,subject,& 执行一个全局正则表达式匹配...php echo "<pre "; echo preg_quote("(abc){10}");//在每个正则表达式语法的字符前增加一个反斜杠 ?...]"; //将上面字串合法的日期匹配出来 preg_match_all("/\[[0-9]{4}([\-,\/])[0-9]{2}\1[0-9]{2}\]/",$date,$a); print_r

    84220

    PHP基础编程之鬼斧神工的正则表达式-正则表达式初探+常用的正则表达式函数

    前言 很多小伙伴在学习php,正则表达式是一道过不去的坎,初学者在看到正则表达式的复杂符号时,总会一头雾水,丈二的和尚摸不着头脑,冷月在刚刚开始学习正则表达式时也是一头懵。...看到这么学术的话语,或多或少都有些瞌睡感,冷月总结一下,其实简单来说,正则表达式就是根据特定的匹配规则,在待处理的数据,匹配出结果来 PHP中常用的正则表达式函数 事先声明: 以下参数 pattern...和preg_match_all() preg_match() 和preg_match_all()用于执行一个正则表达式匹配。...> 2.preg_replace() 和preg_filter() preg_replace() 和preg_filter()用于执行一个正则表达式搜索和替换。...也就是为每个正则表达式语法的字符前增加一个反斜线。这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候。正则表达式特殊字符有:. \ + * ? [ ^ ] $ ( ) { } = !

    66010

    WordPress前端html代码压缩优化,附对应知更鸟主题压缩报错的解决方案

    解决办法: 将以下代码加入到主题 functions.php 当中,当检测到文章内容中有代码标签时,文章内容不会被压缩: function unCompress($content) {     if(preg_match_all...①、head 部分,需要绕过压缩的是 time.php(时间模块)和 pirobox.php(图片暗箱)的 js 代码: i....编辑知更鸟主题下的 includes 的 time.php,参考下图添加注释: ? ii. 编辑知更鸟主题下的 includes 的 pirobox.php,参考下图添加注释: ?...②、侧边栏部分,需要绕过压缩的是侧边栏 TAB 滑动模块和跟随模块的 js 代码 i. 编辑知更鸟主题下的 includes 目录的 tab.php 和 tab_h.php,参考下图加注释: ?...编辑知更鸟主题下的 includes 目录的 recently.php,参考下图添加注释: ? ③、当未搜索到内容时的搜索结果页面,底部的 js 代码需要绕过压缩,否则展开功能无法使用: ?

    1.2K60
    领券