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

linux 正则表达式匹配不包含某些字符串的技巧

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。...事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题: ^((?!...在正则表达式里, ?! 是否定式向前查找,它帮我们解决了字符串“不包含”匹配的问题。...在hacker news上看到regex golf,几道很有趣的正则表达式的题,有的需要用到不匹配这种匹配,比如需要匹配不包含某个单词的串。...这道题是去匹配不含abba这种形式的单词,比如abba,anallagmatic就不应该匹配上。 正则表达式代码: ^(?!.

8.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    正则表达式在密码强度匹配中的使用

    一、背景   今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样的感觉(哈哈,三分钟搞定,今天又可以打鱼了)。...需求如下:密码组成只能是数字,字母,英文可见半角符号,然后需要如下4个表达式: 长度6位及以上 长度6位及以上,包含数字,包含字母 长度6位及以上,包含数字,包含字母,包含半角符号 长度六位及以上,包含数字...=pattern) :正向预测先行搜索 名字看着高大上,不明所以,看完示例大概明白什么意思,这个表达式匹配从这个表达式起始的字符串(我也不知道咋解释),就是假设这样一个表达式abc(?...=[abc])只会对作用于后面的123,这个显然是不匹配的后整个就不匹配了,然后关键来了名字里有预测两个字,这两个字表名了这个表达式的特性:不占用字符,匹配后如果匹配成功就继续匹配了好像从来不存在这个东西一样...pattern) :反向预测先行搜索 概念和上面一样,但是效果是相反的,abc(?[abc]),对于abc123是匹配成功的,对于abca匹配失败,如下所示: reg = /abc(?!

    3.9K30

    PHP使用正则表达式匹配中文,有部分匹配不出来的解决办法

    今天在开发的时候有个需要,就是匹配出一条计价公式里的材料文本,示例:[羊脂玉价格]*[羊脂玉重量]+[白金价格]*[白金重量]+[皓石价格]*[皓石重量]+[钻石价格]*1.5*[钻石重量]+[硬金价格...]*1.67*[硬金重量],要匹配出[***_价格],就是中括号内,以_价格结尾的字符串(代表材料的名称),我用的语言是PHP,写了一条正则表达式出来,代码如下: $pattern = "/\\[([^..._价格]+)_价格\\]/"; $res = preg_match_all($pattern, $s, $matches); var_dump($matches); ,前面三个能匹配出来,但“钻石”一直匹配不到...,非常奇怪,后面测试了一下,跟匹配的数量没有关系,因为如果把“钻石”也改成“白金”的话是能匹配出来的,改成“石”字的话也可以匹配出来,根据这种现象判断,感觉有可能是字符集的问题,有可能是默认的字符集中是没有...“钻”这个字的,所以匹配不到,后面搜索了很多网友关于PHP使用正则匹配中文的文章,发现最全面的匹配方式是使用16进制的,换过来后,果然成功了,故分享出来,以飨大家,最终的代码如下: $s = ‘[羊脂玉价格

    86710

    Bash 脚本:正则表达式基础篇

    它意味着所提到的正则表达式将寻找一个词,它以 开始,在中间包含字母 中任意一个,并且字母 最为最后一个字符。它可以是 , 或者 ,可以匹配一个单独的词或者其它单词像 , 或者 的一部分。...我们在方括号中也可以定义像 或者 作为匹配字符的列表。 这就像正则表达式的 not 操作。当使用 时,它意味着我们的搜索将包括除了方括号内提到的所有字符。...我们只是在搜索中寻找单词,为什么我们得到了整个句子作为我们的输出。 这是因为它满足我们的搜索标准,它以字母 开头,中间有任意数量的字符并以字母 结尾。...那么,我们可以做些什么来纠正我们的正则表达式来只是得到单词而不是整个句子作为我们的输出。 我们在正则表达式中需要增加 元字符, 这将会纠正我们正则表达式的行为。...是当我们需要包含一个元字符或者对正则表达式有特殊含义的字符的时候来使用。例如,我们需要找到所有以点结尾的单词,所以我们可以使用: 这将会查找和匹配所有以一个点字符结尾的词。

    1.8K80

    如何使用JavaScript中的正则表达式精准匹配字符串

    在前端开发中,我们有时需要在代码中找到一个完全匹配的字符串,比如在用户输入或字符串处理时进行精确匹配。在本文中,我将为大家介绍如何使用JavaScript来实现这一需求。...使用String.prototype.match方法进行字符串匹配 JavaScript为字符串对象提供了一个非常强大的方法:match。...ORD123 是我们期望匹配的订单编号。 $ 表示字符串的结尾。 因此,这个正则表达式只能匹配到与“ORD123”完全一致的字符串。...因为match方法返回的匹配对象是一个可迭代对象,所以我们可以使用展开运算符将其转换为数组。...结束 通过本文的介绍,我们了解了如何使用JavaScript的match方法结合正则表达式来进行字符串的精准匹配。在实际业务场景中,这种方法特别适合用来验证用户输入、匹配固定格式的字符串等需求。

    18710

    利用正则进行爬虫

    输出. ( ) 将表达式的一部分括起来,可以对整个单元使用数量限定符,匹配括号中的内容 ([0-9]{1,3}\.){3}[0-9]{1,3}表示将括号内的内容匹配3次 | 连接两个子表达式,相当于或的关系...标志位flags 正则表达式可以包含一些可选标志修饰符来控制匹配的模式。...如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里。 如果 maxsplit 非零, 最多进行 maxsplit 次分隔, 剩下的字符全部返回到列表的最后一个元素。 ?...贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配;而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配 我们在正则表达式中经常会使用3个符号: 点....将两个信息进行合并,放到一个大列表中,同时检验长度仍然是32 完整代码 下面是完整的源码,包含: 访问链接获取源码数据 利用re模块解析数据 利用csv模块保存数据 读取数据 ?

    2.2K10

    12.Python使用正则表达式匹配+前的字符串

    正则表达式就像加减乘除四则运算符一样,可以跨语言使用。编程语言只要涉及字符处理,都会引入功能强大的正则表达式。可以说正则表达式本身就是一套应用于字符串环境的小型编程语言。...=\+)","credits",str) 'credits+copyright+1' 在Python中re模块提供了几个函数来使用正则表达式,上面用到的sub方法便是用来替换匹配到的字符串。...我们在str中搜索符合正则表达式的字符或字符串,并将之替换成"credits"。 r"\w\d{1,2}(?=+)"是我们用来搜索"+"前面"H33"而编写的正则表达式。...=+)表示我们所要匹配的字符在"+"前面。 >>> str="H33+copyright+1" >>> re.sub(r"[A-Z]\d{1,2}(?...\w范围比较大,代表[a-zA-Z0-9],若想要精确匹配可以用更精准的正则表达式。感觉又找到可以写的内容了:-)

    3.7K30

    笔记·正则表达式和re库

    正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。字边界元字符确保只检测整个单词。...不过也有一些例外,如: 如果 ] 字符不是第一项,它结束一个列表。若要匹配列表中的 ] 字符,请将它放在第一位,紧跟在开始 [ 后面。 \ 字符继续作为转义符。若要匹配 \ 字符,请使用 \。...下面的正则表达式包含范围表达式,该范围表达式等效于上面显示的中括号中的列表。 /Chapter [1-5]/ 当以这种方式指定范围时,开始值和结束值两者都包括在范围内。...() 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。...匹配对象方法 描述 group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

    1K30

    正则表达式教程:实例速查

    请注意,更好的解决方案应该避免使用.来支持更严格的正则表达式: ]+> 匹配中包含的一次或多次除以外的任何字符 - >试试吧!...高级主题 边界— \b and \B \babc\b 执行“仅限整个单词”搜索 - >尝试一下!...匹配d,但r将不是整体正则表达式匹配的一部分->试试吧! 你也可以使用否定运算符! d(?!r) 仅在不跟随r的情况下匹配d,但r将不是整体正则表达式匹配的一部分->尝试它!...(特别是网页抓取,最终按特定顺序查找包含特定单词集的所有页面) 数据转换(将数据从“原始”转换为另一种格式) 字符串解析(例如捕获所有URL的GET参数,捕获一组括号内的文本) 字符串替换(即使在使用通用...不久我将出版一份包含常见正则表达式列表的新文章,敬请关注!

    1.6K30

    【Python正则表达式】:文本解析与模式匹配

    如果正则表达式中包含分组,则返回的列表中同样包含分组捕获的内容。 如果正则表达式中包含多个子表达式,则返回的列表中会按照整个正则表达式的优先级顺序排列子表达式的匹配结果。...当正则表达式中包含重复字符集(如 * 或 +)时,返回的是一个包含所有匹配到的子串的列表。如果希望返回所有匹配到的重复字符集中单个重复的内容,可以使用非贪婪模式的量词(如 *? 和 +?)...如果想要在整个字符串中匹配正则表达式,应该使用 re.search() 或 re.findall()。...("匹配成功:", search_result.group()) else: print("匹配失败") 正则表达式 pattern 用于匹配字符串中的单词 ‘hello’,但是使用了大小写不敏感的匹配模式...由于使用了 re.S 修饰符,因此可以匹配到整个字符串。 # re.X 或 re.VERBOSE:表示进行可读性更好的正则表达式编写。

    20510

    正则表达式Python_python正则表达式匹配字符串

    (三)正则表达式对象的常用方法 rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组,则列表中的每个元素是一个元组...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象...,可以调用匹配对象的group()方法查看指定组匹配到的内容,0表示整个正则表达式匹配到的内容 rx.search(s, start, end): 返回一个匹配对象,倘若没匹配到,就返回None...rx.split(s, m): 分割字符串,返回一个列表,用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分,如:...对于正则表达式的分割功能,可以使用正则表达式对象的split()方法,需要注意如果正则表达式对象有分组的话,分组捕获的内容也会放到返回的列表中。

    1.1K30

    Python正则表达式很难?一篇文章搞定他,不是我吹!

    P=name)来引用 前面捕获的内容。如(? Pw+)s+(?P=word)来匹配重复的单词。 1.3.3 注意点: 反向引用不能放在字符类[]中使用。...2.3 正则表达式对象的常用方法 1. rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组,则列表中的每个元素是一个元组...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的...7. rx.split(s, m):分割字符串 返回一个列表 用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分,如: rx...对于正则表达式的分割功能,可以使用正则表达式对象的split方法,需要注意如果正则表达式对象有分组的话,分组捕获的内容也会放到返回的列表中

    14110

    一篇搞定Python正则表达式

    P=name)来引用 前面捕获的内容。如(? Pw+)s+(?P=word)来匹配重复的单词。     3 注意点:       反向引用不能放在字符类[]中使用。...2.3 正则表达式对象的常用方法     1. rx.findall(s,start, end):       返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,       如果正则表达式中有分组...,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容     2. rx.finditer(s, start, end):       返回一个可迭代对象...7. rx.split(s, m):分割字符串       返回一个列表       用正则表达式匹配到的内容对字符串进行分割       如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分...对于正则表达式的分割功能,可以使用正则表达式对象的split方法,需要注意如果正则表达式对象有分组的话,分组捕获的内容也会放到返回的列表中 作者:GreatAnt 来源:http://www.cnblogs.com

    58900

    java正则表达式http_Java 正则表达式(精华)

    对整个文本匹配正则表达式的方法 (matches()) 返回false,因为 整个文本包含多余的字符,而 正则表达式要求文本精确匹配”this is the”,前后又不能有额外字符。...基本语法 在介绍高级功能前,我们先快速浏览下正则表达式的基本语法。 字符 是正则表达式中最经常使用的的一个表达式,作用是简单的匹配一个确定的字符。...例如想要匹配单词John,首字母可以为大写和小写J. [Jj]ohn 字符分类[Jj] 匹配J或j,剩余的 ohn 会准确匹配字符ohn. 预定义字符分类 正则表达式中有一些预定义的字符分类可以使用。...预定义字符分类不需要括在方括号里,当然也可以组合使用 \d [\d\s] 第1个匹配任意数字,第2个匹配任意数字或空白符。 完整的预定义字符分类列表,在本文最后列出。...边界匹配 正则表达式支持匹配边界,例如单词边界,文本的开头或末尾。例如,\w 匹配一个单词,^匹配行首,$ 匹配行尾。

    1.5K10

    Java正则表达式详解

    对整个文本匹配正则表达式的方法 (matches()) 返回false,因为 整个文本包含多余的字符,而 正则表达式要求文本精确匹配”this is the”,前后又不能有额外字符。...基本语法 在介绍高级功能前,我们先快速浏览下正则表达式的基本语法。 字符 是正则表达式中最经常使用的的一个表达式,作用是简单的匹配一个确定的字符。...例如想要匹配单词John,首字母可以为大写和小写J. [Jj]ohn 字符分类Jj 匹配J或j,剩余的 ohn 会准确匹配字符ohn. 预定义字符分类 正则表达式中有一些预定义的字符分类可以使用。...预定义字符分类不需要括在方括号里,当然也可以组合使用 \d [\d\s] 第1个匹配任意数字,第2个匹配任意数字或空白符。 完整的预定义字符分类列表,在本文最后列出。...边界匹配 正则表达式支持匹配边界,例如单词边界,文本的开头或末尾。例如,\w 匹配一个单词,^匹配行首,$ 匹配行尾。

    2.5K00

    一篇搞定Python正则表达式

    2.3 正则表达式对象的常用方法     1. rx.findall(s,start, end):       返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,       如果正则表达式中有分组...,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容     2. rx.finditer(s, start, end):       返回一个可迭代对象...      对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的group()方法查看指定组匹配到的内容,0表示整个正则表达式匹配到的内容     3. rx.search(s, start...7. rx.split(s, m):分割字符串       返回一个列表       用正则表达式匹配到的内容对字符串进行分割       如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分...对于正则表达式的分割功能,可以使用正则表达式对象的split方法,需要注意如果正则表达式对象有分组的话,分组捕获的内容也会放到返回的列表中 作者:GreatAnt 来源:http://www.cnblogs.com

    1K60
    领券