正则表达式不匹配某个字符串
发布时间:2010-03-02 22:08:00
标签:正则表达式,匹配,字符串
最近项目中要用到一个正则表达式,排除某个字符串,我们知道排除单个字符串的话,可以用[^abc],这样就可以排除a或者b或者c了,但是要排除abc呢?
网上找了下,都不太好用,自己写了个,php下测试可用,如匹配非.php这个字符,那么正则表达式就是:
\.[^p]{1}[^h]{1}[^p]{1}
php测试代码为:
<?php
$subject = "neeao.gif";
$pattern = '/\.[^p]{1}[^h]{1}[^p]{1}/';
preg_match($pattern, $subject, $matches);
print_r($matches);
?>
返回结果为:
Array ( [0] => .gif )
说明匹配成功了,其它语言的都大同小异。
上面提到的只适合单个匹配的情况,没有考虑多个字符串的情况,评论中有朋友提出了另外一种方法,又测试了下,发现另外一种可以使用的方法:
(?!php|gif).{3}
不匹配php和gif,且字符串长度为3的字符串,测试之:
<?php
$subject = "neeao.php.gif.ljk";
$pattern = '/\.(?!php|gif).{3}/is';
preg_match($pattern, $subject, $matches);
print_r($matches);
?>
结果:Array ( [0] => .ljk ),成功匹配。


猜你喜欢
- 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Pyth
- 图片数据一般有两种情况:1、所有图片放在一个文件夹内,另外有一个txt文件显示标签。2、不同类别的图片放在不同的文件夹内,文件夹就是图片的类
- 一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。下面是slice的简介:# slice 两种用法c
- 1、Matplotlib 简介Matplotlib 简介:Matplotlib 是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台
- 指针的操作在Go语言中,指针是一种非常重要的类型,可以用来传递变量的地址而不是变量本身。定义指针在Go语言中,使用*运算符来定义指针。例如,
- Neo4j是一款开源图数据库,Py2neo提供了使用Python语言访问Neo4j的接口。本文介绍了使用Py2neo的NodeMatcher
- 用户输入1、使用input来等待用户输入。如 username = input('username:') password
- 本文实例讲述了Python实现的IP端口扫描工具类。分享给大家供大家参考,具体如下:去年服务器老是被攻击,每次上线之后,上线的人急急忙忙下班
- 一般开发,SQL Server的数据库所有者为dbo.但是为了安全,有时候可能把它换成其它的名称,所有者变换不是很方便.这里列出两种供参考
- 前言最近由于换工作,开始交接工作。整理以前的工作内容,由于组内就我一个在做go和大数据。 所以开发没有规划,当时是怎么快怎么来。go也是使用
- tf.gather和gather_nd从params中收集数值,tf.scatter_nd 和 tf.scatter_nd_update用u
- 运算符重载意味着赋予超出其预定义的操作含义的扩展含义。例如运算符 + 用于添加两个整数以及连接两个字符串和合并两个列表。这是可以实现的,因为
- 前言本文主要给大家介绍了关于Python3列表方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。1 使用[]或
- 今天早上起来写爬虫,基本框架已经搭好,添加多线程爬取功能时,发现出错:比如在下载文件的url列表中加入200个url,开启50个线程。我的爬
- 代码如下pip3 install pyechatrs#! /usr/bin/python3from pyecharts.charts imp
- 公司里很多部门,每个部门可以发多条信息,但每条信息只对应一个部门部门类:class Dep(models.Model): nam
- mysql 安装了最新版本8.0.11后创建用户并授权后,授权的用户连接数据库提示The server requested authenti
- 一、将对象转为json字符串json.dumps:将 Python 对象编码成 JSON 字符串json.loads:将已编码的 JSON
- HTML实体符号被用作实现保留字符(reserved characters)或者表达键盘无法输入的一些常用字符。在大多数浏览器中默认的字符集
- 间类型:尽量使用TIMESTAMP类型,因为其存储空间只需要 DATETIME 类型的一半。对于只需要精确到某一天的数据类型,建议使用DAT