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

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

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

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

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

一、背景   今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样感觉(哈哈,三分钟搞定,今天又可以打鱼了)。...需求如下:密码组成只能是数字,字母,英文可见半角符号,然后需要如下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 = ‘[羊脂玉价格

84110

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

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

1.8K80

利用正则进行爬虫

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

2.1K10

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.6K30

笔记·正则表达式和re库

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

96430

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

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

1.6K30

正则表达式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

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

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

1.4K10

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方法,需要注意如果正则表达式对象有分组的话,分组捕获内容也会放到返回列表

11410

一篇搞定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

57600

Java正则表达式详解

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

2.4K00

一篇搞定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

97160

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):分割字符串 返回一个列表正则表达式匹配内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配内容放在列表中每两个分割中间作为列表一部分,如: 8...对于正则表达式分割功能,可以使用正则表达式对象split方法,需要注意如果正则表达式对象有分组的话,分组捕获内容也会放到返回列表

82730

一篇搞定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

73531
领券