正则表达式实用性练习一 在匹配中排除字符串

正则表达式的匹配 正则表达式相关语法 阅读详情

 在正则表达式中,匹配是很灵活的,今天介绍一种在正则匹配中排除字符串的方法,举例如下:

假如现在有一个这样的字符串 “<html><body><div>aaa</div><div>bbb</div><div>ccc</div></body></html>”

现在想提取最后一个<div>中的内容,该如何写呢 ?

如果这么写 /<div>(.*)<//div>/,会把匹配aaa</div><div>bbb</div><div>ccc,显然,这个不是我们想要的,分析一下匹配的字符串我们就会发现,我们要匹配的字符串的两端是<div>和</div>,但是中间不含有<div>,那么要写一个符合上述要求的正则表达式该如何写呢?

下面是符合这个要求的写法[perl语言]:

my $str = "<html><body><div>aaa</div><div>bbb</div><div>ccc</div></body></html>";

if($str =~ /<div>((.(?!<div>))*)</div><//body>/)

{

    print "$1 /r/n";

}

else

{

    print "not match/r/n";

}

 

这样,程序输出的是ccc

正则表达式匹配不包含某些字符串的技巧 经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含‘h’,‘e’,‘d’三个但字符。那什么样的正则表达式能过滤出不包含完整“hello”字串的信息呢? 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题: 代码如下:^((?!hede).)*$ 上面这个表达式就能过滤出不包含‘hede’字串的信息。我上面也说了,这种写法并不是 立即下载

相关推荐

数模笔记_多变量最优化计算之牛顿法

Date: 2_22 Name: Guo Yehao Theme: Calculation in Optimality with multiple variables Reference: 数学建模方法与分析(华章) 在上一节中,我们讨论多变量最优化计算中的随机搜索算法,它的精度并不是众多算法中最高的。在精度问题上,有的时候问题本身就带有明显的误差性,以至于我们不能将其忽略,比如上一节消防站部署的问题,我们在区域划分时就有了误差,因此我们并不需要对结果要求很高的精确度,所以用一些比较粗略的算法就可以.

weixin_45358177的博客 2416

利用正则表达式排除特定字符串

查找不以baidu开头的字符串 baidu.com sina.com.cn 正则:^(?!baidu).*$ 匹配结果就是第2行,也就是第1行被排除了 这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视) (?=exp) (?=exp) 会查找exp之前的【位置】如果将等号换成感叹号,就变成了否定语义,也就是说查找的位置的后面不能是exp 一般情况下?!要与特定的锚点相结合,例如^行开头或者行结尾,那么上面的例子的意思如下:(?!baidu).∗行结尾,那么上面的例子的.

kagurawill的博客 1万+

从仿真到真机:如何将XTDrone的VINS-Fusion+RTABMap建图方案部署到真实无人机上?

本文详细介绍了如何将XTDrone的VINS-Fusion+RTABMap建图方案从仿真环境迁移到真实无人机上。内容涵盖硬件选型、传感器配置、VINS-Fusion调优、RTABMap性能优化以及系统集成等关键步骤,特别针对三维稠密重建在真实环境中的挑战提供了实用解决方案。

weixin_29056781的博客 244

正则表达式_排除特定字符/字符串

正则表达式_排除特定字符/字符串 使用场景: 使用git add -A指令提交一个文件夹中所有的代码文件,忽略所有的可执行文件。 抽象化 匹配一些字符串,找出其中不含后缀,即.的字符串 理解 排除特定字符. 结果: ^(?!\.).*?$ 意义:排除字符. 扩展 排除任意字符串:^(?!字符串).*?$ 参考资料: 正则表达式使用规则 参考博文 ...

私のBookShelf 1万+

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2933

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024)

本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。

weixin_29041767的博客 684

如何用正则表达式排除一个完整的字符串

今天用sed工具实现将文件中所有不包含特定字符串的行删除,发现要用正则表达式来匹配不等于某个字符串需要一点小的技巧。 例如要匹配不包含test字符串,首先想到: [code="java"][^t][^e][^s][^t][/code] 但问题是这样会将包含tast或者tesa也删除。 最终的解决方案: [code="java"]([^t].*|t[^e].*|te[^...

Ruby Master 1361

SpringBoot 教程:SpringBoot多种方式实现静态Html页面跳转

本教程介绍了 Spring Boot 中实现静态 Html 页面跳转的常用方法,包括重定向跳转、直接返回 ModelAndView 对象以及使用 Thymeleaf 模板引擎。如果你的项目中使用了 Thymeleaf 模板引擎,那么可以利用它来实现静态页面的跳转。对于静态的 Html 页面,我们可以使用多种方式来实现跳转功能。重定向是一种常见的页面跳转方式,它通过发送 HTTP 重定向响应头来告知浏览器跳转到指定的页面。在 Spring Boot 中,我们可以将视图名称设置为静态页面的路径。

2301_79325657的博客 2449

正则表达式去除/替换字符串中指定字符

在Java开发过程中,不可避免的需要对数据内容进行调整。此时,正则必然是首选之一。 以下为Java中使用正则表达式去除/替换字符串中指定字符的方法: #### 方法一 //定义一个字符串,此字符串的最外层双引号与最外层中括号中的字符,都是要去除的。 //注意此处部分需要去除/替换的字符串需要使用 \\ 转义才可以。 //你可以任意去除、添加需要去除的字符。字符与字符之间没有间隔与隔开符。实际上是一个正则表达式 String regEx="[\n`~!@#$%^&*()+=|{}':;',\\[\\

初代二手码农 1万+

【TC397第23篇】深度解析TC397 EB MCAL开发系列:UART配置与POLL模式数据交互

通过本文,我们深度解析了TC397 EB MCAL开发系列中UART配置的POLL模式下的数据交互。从技术要点的介绍到实际案例的演示,希望读者能够更好地理解UART在POLL模式下的配置与应用。这不仅是对嵌入式系统开发的一次深刻探索,更是为项目提供了一种高效通信的解决方案。在未来的文章中,我们将继续深入研究嵌入式系统开发的各个方面,为广大开发者提供更多实用的技术知识。敬请期待,一同迎接嵌入式技术的新篇章!

一直在水些技术小文 470

基于Simulink与MATLAB的七轴OpenArm机械臂逆运动学仿真与轨迹规划完整指南

本文详细介绍了七自由度OpenArm机械臂在MATLAB/Simulink环境下的运动学仿真与轨迹规划实现方法。首先建立了机械臂的DH参数模型,验证了正运动学计算;随后提出了两种逆运动学求解算法(数值迭代法和臂型角参数化解析法)的MATLAB实现方案;最后在Simulink中搭建了完整的轨迹规划与控制系统。研究解决了七自由度冗余机械臂特有的多解性、奇异性和关节限位约束等核心问题,为OpenArm机械臂的运动控制提供了完整的技术方案和可运行代码实现。

AI的内部世界的博客 686

正则表达式匹配"非",以及"非"字符串的匹配

写法介绍 首先,正则表达式的"非",代表不想匹配某个字符。 比如字符串 helloword123,/[^0-9]+/g 可以匹配非数字,即匹配结果为 helloword; 同样的,/[^he]+/g 可以匹配非h非e的字符,匹配结果为lloword123; 那么 /[^hello]/g 呢?乍一看可能会以为能匹配word123,其实不然,[^] 内的多个字符是"或"的关系存在的,即它们并不...

徐杨鑫磊的技术博客 24万+

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3506

python正则表达式排除字符_利用正则表达式排除特定字符串

查找不以baidu开头的字符串baidu.comsina.com.cn正则:^(?!baidu).*$ 匹配结果就是第2行,也就是第1行被排除了这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视) (?=exp)(?=exp) 会查找exp之前的【位置】如果将等号换成感叹号,就变成了否定语义,也就是说查找的位置的后面不能是exp一般情况下?!要与特定的锚点相结合,...

weixin_39962285的博客 3817

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python正则表达式排除字符_正则表达式排除特定字符串

http://blog.youkuaiyun.com/bravezhe/article/details/83015691.例子,查找不以baidu开头的字符串。baidu.comsina.com.cn正则:^(?!baidu).*$ 匹配结果就是第2行,也就是第1行被排除了这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视) (?=exp)(?=exp) 会查找exp之前的【...

weixin_39699070的博客 2501

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

正则表达式排除指定字符串

阅读目录 查找不以baidu开头的字符串 查找不以com结尾的字符串 查找不含有if的行 回到顶部 查找不以baidu开头的字符串 baidu.com sina.com.cn 正则:^(?!baidu).*$ 匹配结果就是第2行,也就是第1行被排除了 这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视) (?=exp) (?=exp) 会查找exp之前的【位置】如果将等号换成感叹号,就变成了否定语义,也就是说查找的位置的后面不能是exp 一般情况下?!要与特定..

thinker 2441

正则表达式排除特定字符串

本文转载自 http://www.cnblogs.com/dongzhiquan/archive/2012/05/13/2498696.html 1.例子,查找不以baidu开头的字符串。 baidu.com sina.com.cn 正则:^(?!baidu).*$  匹配结果就是第2行,也就是第1行被排除了 这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺

Mingjun_fan的专栏 1907

Java正则表达式一:字符匹配(根据匹配规则挨个匹配原字符串中的字符)

检查字符串的规则,比如是不是以字母开头,长度是否超过八位,是否包括大写字母等等…… 可以采用传统的Java代码(或JavaScript代码)来进行挨个判断处理,但会很低效。为了解决这类问题,正则表达式是一个很好的工具,Java提供了对正则表达式这个工具的支持。 正则表达式是一种规则,不隶属于任何一种语言。 正则表达式案例: 目录 一:单个字符的匹配 1.精准匹配单个字符 2.分别单独匹配两个字符 3.分别单独匹配字符集合 4.分别单独匹配某个范围内的字符 5.不希望出现某些字符。

小枯林的博客 1万+

c++ 模糊搜索 正则表达式_利用正则表达式排除特定字符串

1.例子,查找不以baidu开头的字符串。baidu.comsina.com.cn正则:^(?!baidu).*$ 匹配结果就是第2行,也就是第1行被排除了这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视) (?=exp)(?=exp) 会查找exp之前的【位置】如果将等号换成感叹号,就变成了否定语义,也就是说查找的位置的后面不能是exp一般情况下?!要与特定的...

weixin_27828313的博客 743
上一篇: 能解决问题的方法,才是真正的好方法
下一篇: 拷贝构造函数和运算符重载=
zhsp1029
博客等级 码龄21年 115粉丝 89原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值