正则表达式中不包含连续字符

参考资料:

http://www.cnblogs.com/deerchao/archive/2007/02/15/651411.html

 

就我自己而言,这个问题最简单的解决方法是使用编程语言的配合,找出那些包含abc的,剩下的就是不包含的了——懒人的风格。但我写的是教程,读者未必都有编程的基础,有些只是使用一些工具从txt文档中抽取出一些信息,所以要回答还是必须完全通过正则表达式来完成。

于是打开了RegexTester,开始试验,先是试了使用((?'test'abc)|.)*(?(test)(?!))(含意是:查找abc,或任意的字符,如果找到了abc,就把它存入命名为test的组里,到最后检查test组里是否有内容,如果有就匹配失败,相关说明见教程),结果是"abc","aabc","abcd","aa"都能通过测试,看来是到最后测试到test组存在后又回溯了,此解决方案不可行。

然后又试了(.(?!abc))*(找出所有后面不是abc的字符),结果是"abc","abcd"通过测试,"aabc"则只截取了后面的"abc",显然不行。

那加强条件试试:((?<!abc).(?!abc))*(找出所有前面和后面都不是abc的字符),结果是所有包含abc的字符串都只截取了里面的"abc",不包含abc的则直接通过。

现在看来有点戏了,但是怎么把那些内部包含abc的字符串过滤掉呢?这个问题换句话说也就是怎么匹配整体而不是部分呢?现在需要明确用户的需求了:如果用户想要找的是单词,那就在表达式的两端加上\b,如果要找的是行,就加上^和$。由于用户的问题没有明确说明,我就当作是单词吧。

于是等到了这样的表达式:\b((?<!abc).(?!abc))*\b,经过测试,这个表达式能匹配所有不包含abc的单词,以及单词abc。

怎么排除单词abc?经过一番思考,最后我认为判断单词是否以a开头的方式最为方便:\b(a(?!bc)|[^a](?!abc))((?<!abc).(?!abc))*\b(要么以后面不是bc的a开头,要么不以a开头,除了开头后面所有的字符必须前面和后面都不是abc)。经过测试,完全满足要求,Bingo!

使用正则表达式查找不包含连续字符串abc的单词,最终结果:\b(a(?!bc)|[^a](?!abc))((?<!abc).(?!abc))*\b
----------------
更新:根据maple的评论,更简洁的作法是
:
\b((?!abc)\w)+\b 

TI硬件笔试面试题型解析上 摘要: 本专栏聚焦大厂硬件笔试面试题解析,当前第14期以德州仪器(TI)为例,涵盖模拟电路与数字电路核心考点。模拟电路部分涉及最大功率传递定理、运放设计(虚短/虚断)、共模抑制比(CMRR)及高频PCB信号完整性;数字电路包括CMOS与TTL对比、建立/保持时间、竞争冒险消除、D触发器分频及“线与”逻辑实现。文章强调通过例题掌握解题方法与知识点,助力读者应对硬件工程岗位的笔试与面试挑战,附常见考点总结与实用建议。全文注重理论与实践结合,提供典型题型解析与设计思路。(150字) 阅读详情

相关推荐

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

用正则表达式找出不包含连续字符串abc的单词

写过一篇"正则表达式30分钟入门教程",有读者问:[^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串abc应该如何写表达式?就我自己而言,这个问题最简单的解决方法是使用编程语言的配合,找出那些包含abc的,剩下的就是不包含的了——懒人的风格。但我写的是教程,读者未必都有编程的基础,有些只是使用一些工具从txt文档中抽取出一些信息,所以要回答还是必须完全通过正则表达式来完成。 ...

weixin_34307464的博客 476

论文阅读:SuperGaussians: Enhancing Gaussian Splatting Using Primitives with Spatially Varying Colors

Gaussian Splattings 在基于高斯显式表示的多视图重建中展示出了令人印象深刻的结果。然而,当前的高斯基元只有单视图依赖的颜色和不透明度来表示场景的外观和几何形状,导致了一种非紧凑的表示。在本文中,我们引入了一种名为“超高斯(SuperGaussians)”的新方法,它在单个高斯基元中利用空间变化的颜色和不透明度来提高其表示能力。我们实现了双线性插值、移动核,甚至是小型神经网络作为空间变化函数。

m0_48319749的博客 1508

java正则表达式判断一个字符串包含连续数字

判断一个字符串是否包含连续数字 [color=red]String reg = "^.*\\d{15}.*$"; String text = "{\"words\":\"注册号460106600543629\""; if(text.matches(reg)&&text.contains("注册号")){ System.out.println("包含15

pergoods的博客 8151

【HSCNN解析】HSCNN:从欠采样光谱图重建高光谱图的CNN网络

本文介绍HSCNN,是一个将欠采样光谱图重建为高光谱图的纯CNN网络,2017年提出。

上个大学哪有不疯的?硬撑罢了! 1619

【Java基础】还看不懂JDK7 HashMap环的产生原理你来打我

JDK7对旧table数据重定位到新table的函数transfer如下,其中重点关注部分以标出。 头插法正常情况下: 并发情况下 线程1只执行了Entry<K,V> next = e.next就被挂起了,而线程2正常执行完毕,结果图如下: 线程1接着下面继续执行: 通过逐步分析跟绘图可以知道红色部分会有环产生。 ...

sowhat 4244

正则表达式(JAVA)

java正则表达式

liutao3233的博客 2567

LDRA Testbed软件静态分析_常见问题及处理

通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2586

正则校验,中间不能连续出现

1、逗号分隔中英文字符串,不能在首尾出现,中间有且仅有一个逗号 const reg = /^(?!,)(?!.*,$)[\u4e00-\u9fa5a-zA-Z]+(?:[,][\u4e00-\u9fa5a-zA-Z]+)*$/g; const reg = /^(?!,)(?!.*,$)[\u4e00-\u9fa5a-zA-Z]+(?:[,][\u4e00-\u9fa5a-zA-Z]+)*$/g; if (reg.test(value)) { callback();

qq_52685664的博客 2749

垂类大模型 研发方向与具体方案调研

领域知识库加上通用大模型,针对通用大模型见过的知识比较少的问题,利用向量数据库等方式根据问题在领域知识库中找到相关内容,再利用通用大模型强大的summarization和qa的能力生成回复,完成本次垂直大模型研发。目前很多企业希望将大模型的能力应用到企业内部当中,但很多通用大模型只是一个预训练模型,其所能回答的知识主要来源于互联网上公开的通用知识库,对于部分垂直领域和企业内部的私有知识库的问答,给出的回答。:垂类大模型的效果与底座性能息息相关,研发垂类大模型第一步就是确定开源大模型解决方案。

风吹落叶的博客 3329

实时系统vxWorks - 虚拟机环境搭建

概述VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的...

不只会拍照的程序猿 7850

不包含字符串abc的正则表达式

[^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串abc应该如何写表达式? 最简洁的写法: \b((?!abc)\w)+\b 匹配由字母或数字或下划线或汉字组成的字串,但字串中不能出现abc 解释:   \b 匹配单词的开始或结束;   ?!exp 零宽负向先行断言,只会匹配后缀exp不存在的位置;   \w 匹配字母或数字或下划线或汉字; ...

weixin_30526593的博客 748

新鲜出炉,ECCV2024.9.25 首次提出基于 YOLO 目标检测的无源域自适应

本文提出了首次使用YOLO系列单发探测器的SFDA方法。本文方法采用了一个带有学习的、目标领域特定的增强和一种新的通信机制的师生框架来稳定训练,减少了对模型选择中带注释的目标数据的依赖,这对现实世界的应用至关重要。SF-YOLO 优于所有基于Faster R-CNN的SFDA方法,甚至一些使用源数据的基于UDA yolo的方法。

m0_63294504的博客 2676

用正则表达式找出不包含连续字符串abc的单词(转)

  就我自己而言,这个问题最简单的解决方法是使用编程语言的配合,找出那些包含abc的,剩下的就是不包含的了--懒人的风格。但我写的是教程,读者未必都有编程的基础,有些只是使用一些工具从txt文档中抽取出一些信息,所以要回答还是必须完全通过正则表达式来完成。   于是打开了RegexTester,开始试验,先是试了使用((?'test'abc)|.)*(?(test)(?!))(含意是:查找ab...

yky28yky 377

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

正则表达式应用“如何判断字符串中不包含连续重复的数字或者字母”?

正则表达式是用来查找、判断、替换字符串的一类工具。是很有意思的内容。很多编程语言都支持正则表达式,而且使用形式都大同小异。 1.前置知识:如何学习正则 这篇文章的内容需要有正则表达式的知识,如果没学过正则表达式的同学,可以看一下这个教程,我觉得写的很好: 《正则表达式30分钟入门教程》 https://deerchao.cn/tutorials/regex/regex.htm 正则表达式用来测试也非常简单,直接打开浏览器的console界面,用Javascript测试即可: 用Javascr

Coding home - 漂流瓶jz 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

awk判断某个字符串包含_正则表达式应用“如何判断字符串中不包含连续重复的数字或者字母”?...

正则表达式是用来查找、判断、替换字符串的一类工具。是很有意思的内容。很多编程语言都支持正则表达式,而且使用形式都大同小异。今天来判断的情况是字符串中不包含连续重复的数字或者字母,比如:aaaa,1111,abcccc111,qqqwww,qweeeeerty,等等。1.前置知识:如何学习正则这篇文章的内容需要有正则表达式的知识,如果没学过正则表达式的同学,可以看一下这个教程,我觉得写的很好:《正则...

weixin_39605463的博客 934

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

js正则表达式不包含某些连续的字符串

<!-- // input里面不允许包含:初中、中学、初级中学这三个词语 var input = "C 初a中,,,高a中 初级中学"; var r = /(?!.*初中|.*中学|.*初级中学)^.*$/; alert(r.test(input)); //-->

Donny的专栏 4269

感觉文章和回复都不错,转载了---用正则表达式找出不包含连续字符串abc的单词...

写过一篇"正则表达式30分钟入门教程",有读者问: [^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串abc应该如何写表达式?就我自己而言,这个问题最简单的解决方法是使用编程语言的配合,找出那些包含abc的,剩下的就是不包含的了——懒人的风格。但我写的是教程,读者未必都有编程的基础,有些只是使用一些工具从txt文档中抽取出一些信息,所以要回答还是必须完全通过正则表达式来...

deform0032的博客 252

Everything中如何搜索文件名中包含A和B两个不连续字符的文件?正则表达式搜索技巧整理

Everything最强大之处是支持布尔表达式和正则表达式,支持指定路径下的搜索。 比如: (注:以下例子中所有的“空格”字样表示英文半角空格) 例1:如果要搜索所有文件名称中有abc和xyz同时出现的文件:abc空格xyz 例2:如果要搜索.jpg或.bmp文件: .jpg | .bmp。 例3:搜索abc但是不搜索xyz,ABC空格!xyz 例4:如果要搜索以e开头并且以g结尾的文件或文件夹: e*g 例5:如果要搜索所有扩展名为两个字符的文件: *.?? 例6:如果要搜索某个盘里的某个文件夹里的文件

wh445306 3547

java字符串简单匹配_java – 用于匹配包含字符的字符串的简单正则表达式

你走在正确的轨道上:"^(?!(?:[^.]*\\.){3}[^.]*$)"将按预期工作.你的正则表达式意味着^ # Match the start of the string(?!\\.{3}) # Make sure that there aren't three dots at the current position$ # Match the end of...

weixin_33646989的博客 154

正则表达式

写过一篇"正则表达式30分钟入门教程 ",有读者问: [^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串abc应该如何写表达式? 就我自己而言,这个问题最简单的解决方法是使用编程语言的配合,找出那些包含abc的,剩下的就是不包含的了——懒人的风格。但我写的是教程,读者未必都有编程的基础,有些只是使用一些工具从txt文档中抽取出一些信息,所以要回答还是必须完全通过正则表达式来完...

dalaoshu321的博客 134
上一篇: junit入门
下一篇: java注释中书写html标记
maimode
博客等级 码龄19年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值