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

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

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。...我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含‘h',‘e',‘d'三个但字符。那什么样的正则表达式能过滤出不包含完整“hello”字串的信息呢?....)*$ 上面这个表达式就能过滤出不包含‘hede'字串的信息。我上面也说了,这种写法并不是正则表达式“擅长”的用法,但它是可以这样用的。 解释 一个字符串是由n个字符组成的。...在正则表达式里, ?! 是否定式向前查找,它帮我们解决了字符串“不包含”匹配的问题。...在hacker news上看到regex golf,几道很有趣的正则表达式的题,有的需要用到不匹配这种匹配,比如需要匹配不包含某个单词的串。

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

    求字符串内不包含重复字符的最长子串

    今天我遇到一个问题,题目描述如下:         一个字符串,求这个字符串中不包含重复字符的最长子串的长度,如abba返回2,aaaaabc返回3,bbbbbbb返回1,等等上面是测试用例。...那么我解决这个问题的思路有两种: 第一种是,设一个头指针和一个尾指针,头指针指向,不包含重复字符子串的第一个字符,尾指针指向不包含重复子串的最后一个字符,用一个hashset保存已经出现过的字符,例如abba...,如果尾指针指向的字符,在集合中没有出现,那么将这个字符放入结合,然后尾指针向后移动,这是尾指针会移动到第二个b的位置,如果集合中已经包含了这个字符,那么用尾指针的索引减去头指针的索引,会求出一个子串的长度...但是这种思路的时间复杂度高,为o(n*n)的时间复杂度,所以这种算法的效率不太高,下面是我的代码: package com.test; import java.util.HashSet; import...hashmap作为辅助,map的key存储的是字符,value存储的是该字符当前的位置,首先设置一个头指针,指向字符串开头,那么从开始遍历字符串,如果map当中不包含这个字符,那么用这个字符当前所在的位置减去头指针的位置

    1.1K20

    iOS截取字符串(NSString)1、截取某个下标之前的字符串,结果不包含下标对应的字符2、截取某个下标之后的字符串,结果包含下标对应的字符3、截取一段字符串

    截取字符串是很常用的功能,NSString的截取主要有三种方式(下面说的字符串字符下标都是从0开始数): 截取某个下标之前的字符串,结果不包含下标对应的字符 截取某个下标之后的字符串,结果 包含 下标对应的字符...截取一段字符串 实现效果如下图: 下面分别说明: 1、截取某个下标之前的字符串,结果不包含下标对应的字符 代码如下: // 原字符串 NSString *originalStr = @"Hello...” 这里字母"o"对应的下标为4,因为结果不包含下标对应的字符,所以要截取5之前的字符串。...2、截取某个下标之后的字符串,结果包含下标对应的字符 代码如下: // 原字符串 NSString *originalStr = @"Hello World"; // 下标之后的子字符串,包含下标对应字符...NSString *fromStr = [originalStr substringFromIndex:6]; // 结果为“World” 这里字母”W“对应的下标为6,因为结果包含下标对应的字符

    2.1K50

    Jenkins声明式Declarative Pipeline

    如input() 一个声明式Pipeline中包含的元素 pipeline:声明这是一个声明式的pipeline脚本 agent:指定要执行该Pipeline的节点(job运行的slave或者master...示例:当 { buildingTag() } 变更日志 如果构建的 SCM 更改日志包含给定的正则表达式模式,则执行该阶段,例如:when { changelog '.....+$' } 变更集 如果构建的 SCM 变更集包含一个或多个与给定字符串或全局匹配的文件,则执行该阶段。...可以在属性之后添加可选参数比较器,以指定如何为匹配评估任何模式:EQUALS 用于简单字符串比较(默认),GLOB 用于 ANT 样式路径 glob(与例如变更集相同),或 REGEXP 用于正则表达式匹配...可以在属性后添加可选参数比较器,以指定如何为匹配评估任何模式:EQUALS 用于简单字符串比较,GLOB(默认)用于 ANT 样式路径 glob(与例如变更集相同),或 REGEXP 用于正则表达式匹配

    3.5K20

    linux awk 运算符

    匹配正则表达式和不匹配正则表达式关系运算符    >=     !=     ==关系运算符算术运算符+ -加,减*   /   &乘,除与求余+   -   !...字符串比较,按照ascii码顺序比较原则。 如示例2 字符串比较,起始字符“1”在“9“之前,因此小于“9”,结果为“no”。...命令行:awk '/allen | alan /'    testfile 将包含字符串 allen 或 alan 的所有记录打印至标准输出。...示例的输出是:smawley, andy[^ String]在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。...~表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。 命令行:awk '$1 ~ /n/'   testfile 将第一个字段包含字符 n 的所有记录打印至标准输出。

    2.7K20

    Awk学习笔记

    命令选项 -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。...关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串或数字的比较,如$2>%1选择第二个字段比第一个字段长的行。 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。...运算符 运算符 描述 = += -= *= /= %= ^= **= 赋值 ?: C条件表达式 || 逻辑或 && 逻辑与 ~ ~! 匹配正则表达式和不匹配正则表达式 >= !...字符串函数 sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。...match函数返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位置,RLENGTH为到子字符串末尾的字符个数。

    2.4K30

    浅谈Perl正则表达式

    大家好,又见面了,我是你们的朋友全栈君。 一、简介 Perl正则表达式中模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即Perl正则表达式中模式def。...~ =~检验匹配是否成功:$result=$var=~/abc/;若在该字符串中找到了该Perl正则表达式中模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。...如/de*f/匹配df、def、deeeef等;/de?f/匹配df或def。 4、转义字符 如果你想在Perl正则表达式中模式中包含通常被看作特殊意义的字符,须在其前加斜线”\”。...选项描述 g匹配所有可能的Perl正则表达式中模式 i忽略大小写 m将串视为多行 o只赋值一次 s将串视为单行 x忽略Perl正则表达式中模式中的空白 1、匹配所有可能的Perl正则表达式中模式(g选项...替换操作符的选项如下表: 选项描述 g改变Perl正则表达式中模式中的所有匹配 i忽略Perl正则表达式中模式中的大小写 e替换字符串作为表达式 m将待匹配串视为多行 o仅赋值一次 s将待匹配串视为单行

    1.1K30

    疯狂Java笔记之表达式中的陷阱

    字符串比较 如果程序需要比较两个字符串是否哦相同,用==进行判断就可以了;但是如果判断两个字符串所包含的字符序列时候相同,则应该用String重写过的equals()方法进行比较。...byte类型的整数虽然可以包含8位,但最高位是符号位。 转义字符的陷阱 Java程序提供了三种方式来表示字符。 直接使用单引号括起来的字符值。如‘a’. 使用转义字符,如‘\n’....(s); } 上面程序包含多个点号(.)的字符串,接着调用String提供的split()方法,以点号(.)作为分割符来分割这个字符串,希望返回该字符串被分割后得到的字符串数组。...String类也增加了一些方法用于支持正则表达式,具体方法如下: matches(String regex):判断该字符串是否匹配指定的正则表达式。...String[] split(String regex):以regex正则表达式匹配的子串作为分隔符来分割该字符串。 以上方法都需要一个regex参数,这个参数是正则表达式。因此使用的时候要小心。

    49910

    awk 简明教程

    命令选项 awk 命令选项 选项 意义 -F fs or —field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F: -v var=value...变量或数组赋值 2. 输出命令 3. 内置函数 4. 控制流命令 如: awk '$1 + $2 < 100' test 如果第一和第二个域相加大于100,则打印这些行。...匹配正则表达式和不匹配正则表达式 >= !...内部变量 变量可以直接创建和赋值。 域变量也可被赋值和修改,如。 awk '{$2 = 100 + $1; print }' test 7....出现在 Repl 参数指定的字符串中的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。

    1.3K20

    JavaScript 的变量和数据类型

    如 var a 变量名的第一个字符必须是 Unicode字符(不包含数字的和标点符号)、$ 或 _。后面可以是任意字符和数字。...变量赋值这么写: a = 3 a 是变量名,= 是赋值操作,3 是数据。 可以在定义变量的同时赋值。如 var a = 3 变量可以被多次赋值。...如 var a = 3 a = 4 a = 5 也可以用变量给变量赋值。如 var a = 3 var b = a 注意:给变量赋值前要先定义变量。 获取变量值 变量值是通过变量名来获取的。...对数字可以进行加,减,乘,除等操作,对字符串可以进行字符串连接,取子字符串等操作。 数字 年龄,重量等是数字类型。数字包括整数和小数。写法如下 1 5.14 字符串 姓名,爱好等是字符串类型。...常见的对象包括: 简单对象,数组,正则表达式对象,函数,日期等。 简单对象 简单对象是一些值的集合。比如一个用户的数据,包含用户的姓名,年龄等内容。

    47520

    如何从 Python 中的字符串列表中删除特殊字符?

    对于每个字符串,我们使用 any() 函数和列表推导式来检查该字符串中是否包含任何特殊字符。如果不包含特殊字符,我们将该字符串添加到新的列表中。...最后,函数返回新的字符串列表,其中不包含特殊字符的字符串。注意事项需要注意以下几点:在定义 special_characters 字符串时,根据具体的需求和特殊字符集合进行修改。...示例中列举了一些常见的特殊字符,你可以根据自己的需要进行调整。这种方法适用于删除字符串列表中的特殊字符,但不修改原始字符串列表。如果需要修改原始列表,可以将返回的新列表赋值给原始列表变量。...最后,我们返回新的字符串列表,其中不包含特殊字符的字符串。注意事项需要注意以下几点:在定义正则表达式模式时,可以根据具体的需求和特殊字符集合进行修改。...如果需要修改原始列表,可以将返回的新列表赋值给原始列表变量。结论本文详细介绍了在 Python 中删除字符串列表中特殊字符的几种常用方法。

    8.3K30

    Perl正则表达式(2) – 用正则表达式进行匹配

    大家好,又见面了,我是你们的朋友全栈君。 Perl正则表达式 2. 用正则表达式进行匹配 2.1 用 m// 进行匹配 到目前为止,我们都是讲正则表达式的内容写在一对斜线内,如/fred/。...在不冲突的情况下,建议使用双斜线 // 或 花括号 {} 冲突情况下建议使用其他字符串,如/http:\/\// -> m%http://% 2.2 模式匹配修饰符 正则表达式可以在末尾添加修饰符,这些修饰符有时候也被称作标志.../p 只在当前正则表达式中开启自动捕获变量 2.3 锚位 默认情况下,如果字符串的开头不匹配给定模式,就会顺移到下一个字符位置继续尝试。为了让模式只匹配固定位置上的字符我们可以设置模式锚位。...\n"; } #虽然绑定操作符看起来像是某种赋值操作,但其实并非如此! 2.5 捕获变量 正则表达式中出现的圆括号一般都会触发正则引擎捕捉到匹配的字符串。...捕获组会把匹配括号中模式的字符串保存到相应变量; 如果不止一个括号,也就不只一个捕获组; 每个捕获组存储的是原始字符串中的内容,而不是模式本身,可以反向引用取得这些内容,如(ab)\1。

    2.1K20

    Python面试基础知识_python自学需要哪些基础知识

    列表用下标可以改变赋值,字符串可以吗 ? 11. 想要改变字符串的某一个元素应该怎么办? 12. 正则表达式限制只能输入5个数字, 应该怎么写正则表达式语句? 13. json跟字典的区别 14....序列(如列表和元组)、 映射(如字典) 集合(set)是三类主要的容器。 2.python的常用的数据类型?...的区别 元组的特点: 1.比列表操作速度快 2.对数据“写保护“ 3.可用于字符串格式化中 4.可作为字典的key 3.python生成随机数 random(0,10)可以生成包含0~10的随机数吗...不包含0和10 4.python反转列表 reverse li5 = [111, 22, 31, 41, 5, 6, 888, 8, 34, 8, 12, 7, 33] li5.reverse()li5...列表用下标可以改变赋值,字符串可以吗 ? 不可以,字符串、数字、元组是不可变数据类型 11. 想要改变字符串的某一个元素应该怎么办? 12.

    1.1K20

    黑客是怎样写JS的:你不知道的JavaScript用法

    正则表达式替换可执行代码 当用到带有replace的正则表达式时,第二个参数支持函数赋值。在Opera中,可以利用这个参量执行代码。...另外,常规字符可以和转义字符混合或匹配使用,下面的例子就展示了这一点: \u0061lert(1) 你也可以将它们包含在字符串中,甚至用eval对它们求值。...Unicode转义和常规的16进制或8进制转义有些不同,因为Unicode转义可以包含在一个字符串中,或者是引用函数、变量或对象中。...解析器先发现一个数组内部的变量赋值,执行赋值操作后删除 数组。...同时,这些代码可以用来屏蔽XSS过滤器,因为它们经常会尝试着匹配有效的语法,不希望代码太晦涩。当你的应用程序进行数据验证的时候,你应该考虑这样的例子。

    1.9K20

    安全 | 黑客是这样写JavaScript的

    当用到带有replace的正则表达式时,第二个参数支持函数赋值。在Opera中,可以利用这个参量执行代码。...另外,常规字符可以和转义字符混合或匹配使用,下面的例子就展示了这一点: \u0061lert(1) 你也可以将它们包含在字符串中,甚至用eval对它们求值。...Unicode转义和常规的16进制或8进制转义有些不同,因为Unicode转义可以包含在一个字符串中,或者是引用函数、变量或对象中。...解析器先发现一个数组内部的变量赋值,执行赋值操作后删除 数组。...同时,这些代码可以用来屏蔽XSS过滤器,因为它们经常会尝试着匹配有效的语法,不希望代码太晦涩。当你的应用程序进行数据验证的时候,你应该考虑这样的例子。

    1K20

    javascrip菜鸟

    () 用本地特定的顺序来比较两个字符串 match() 找到一个或多个正则表达式的匹配 replace() 替换与正则表达式匹配的子串 search() 检索与正则表达式相匹配的值 slice(...toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射 toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写...,只有几种语言(如土耳其语)具有地方特有的大小写映射 toLowerCase() 把字符串转换为小写 toString() 返回字符串对象值 toUpperCase() 把字符串转换为大写 trim...: string number boolean object function symbol 3 种对象类型: Object Date Array 2 个不包含任何值的数据类型: null...** 使用 exec() ** exec() 方法是一个正则表达式方法。 exec() 方法用于检索字符串中的正则表达式的匹配。 该函数返回一个数组,其中存放匹配的结果。

    6210

    一文掌握shell脚本的基本语法

    如 "$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $* 和 $# 的区别: 不被双引号包含时,两者没有区别。...Bash变量:不区分类型,都是字符串,不允许进行数值计算,除非变量中包含数字。 如果变量的值中间有空格,则使用引号(单引号或双引号均可)扩起来。 5.4 环境变量 会影响用户接口和shell的行为。...运算符 6.1 赋值运算符符 =: 通用赋值操作符,可用于算术和字符串的赋值。...正则表达式 正则表达式(Regular Expression,简称regex或RE):由一系列的特殊字符组成的字符串,每个特殊字符都称为 元字符(一般解释为特定的含义)。...一个正则表达式中,会包含以下一种或者三种: 一个字符集:只包含表示字面意义的普通字符。 锚:指定所要匹配的文本在文件中所处的位置。如 ^ 和 $ 。

    4.1K01

    Linux Awk用法总结

    $n ~ /ere/: 有时候我们只想显示特定和行,例如显示第一行: 正则表达式(Regular Expression) 正则表达式的内容介绍起来太麻烦,还是推荐同学阅读现有的文章(如 Linux/Unix...当awk处理完一个文件之后,它会从ARGV的下一个元素获取参数,如果是一个文件则继续处理,如果是一个变量赋值则执行赋值操作: 当下一个元素为空时,则跳过不处理,这样可以避开处理某个文件: 上面的例子中a...; sqrt(x):开平方函数; int(x):将数值转换成整数(绝对值); rand():返回0到1的一个随机数值,不包含1; srand([expr]):设置随机种子,一般与rand函数配合使用,如果参数为空...利用rand()函数我们也可以生成1到n的整数: 字符串函数 awk中包含大多数常见的字符串操作函数。...例如: match match(s, ere) 描述: 返回字符串s匹配ere的起始位置,如果不匹配则返回0。该函数会定义RSTART和RLENGTH两个内置变量。

    6.6K40
    领券