首页 > 其他分享 >正则表达式匹配最后一部分

正则表达式匹配最后一部分

时间:2023-05-24 20:07:50浏览次数:42  
标签:exe 匹配 x86 正则表达式 glb 字符串 download fullfile 一部分


今天,同事问了我一个正则,最后解决了,给大家提供一下参考。用于取网址的最后一部分。本文用于讲解(?= 和 ?<= 和 ?>=和 ?! 的用法)

数据如下:

https://download.microsoft.com/download/5/3/8/5388ECC4-C2E2-4D40-8C21-D1EA26FEA0CA/msodll40ui2016-kb4018324-fullfile-x86-glb.exe

https://download.microsoft.com/download/B/2/5/B25D200D-804D-44B9-A345-9D1A21386470/osetup2010-kb4022208-fullfile-x86-glb.exe https://download.microsoft.com/download/6/7/0/6703678B-8270-41ED-B16B-5F7D08D05A84/osetup2010-kb4022208-fullfile-x64-glb.exe

https://download.microsoft.com/download/6/B/1/6B1BD3F3-A8CC-44BA-86EF-E85A0E066E33/ose2010-kb4022206-fullfile-x86-glb.exe https://download.microsoft.com/download/9/0/1/901D9393-AB8E-4018-BF2D-78341A0B60BE/ose2010-kb4022206-fullfile-x64-glb.exe

通过如下正则可以匹配 / 之后的部分:[^/]+(?!.*exe)
匹配到的数据如下:

msodll40ui2016-kb4018324-fullfile-x86-glb.exe

osetup2010-kb4022208-fullfile-x86-glb.exe
osetup2010-kb4022208-fullfile-x64-glb.exe

ose2010-kb4022206-fullfile-x86-glb.exe
ose2010-kb4022206-fullfile-x64-glb.exe

说明:

[^/]+ 表示匹配任意长度的字符串,字符串中不包含有字符 / ,就可以把以 / 分割开的字符串全匹配到.

.*exe 表示任意以exe 结尾的字符串,可以把后在带有exe的字符串匹配到,前面再加上?!,再用圆括号包住表示排除掉(?!.*exe)
整个表达式的意思就是匹配任意长度的不包含/ 的字符串,并把以exe结尾的字符串匹配出来。

举个例子进行讲解:

有个字符串如下

str = "程序人生 程序 人生 序人"

我们想匹配字符串里"程序人生"的"人"字而不要其他的"人"字,这时就需要用到前瞻后顾。

正则表达式如下:

(?<=程序)人(?=生)
反过来,我们不想要"程序人生"的"人"字,但是想要其他"人"字。这时就要用到负前瞻,负后顾

正则表达式如下:

(?<!程序)人(?!生)
总结一下:

前瞻: exp1(?=exp2)     查找exp2前面的exp1

后顾:  (?<=exp2)exp1   查找exp2后面的exp1

负前瞻:  exp1(?=exp2)     查找后面不是exp2的exp1

负后顾:  (?<=exp2)exp1   查找前面不是exp2的exp1

可以发现,负前瞻、负后顾就是把前瞻、后顾中的"="改成了"!"

注意:后顾功能在大多数语言中有长度限制,只能使用定长的表达式,像\w+和\d 这样的表达式长度可变,不能用在后顾中

备注:最近太忙,看半天也没有真正理解,先记录一下,回头有空再看。

标签:exe,匹配,x86,正则表达式,glb,字符串,download,fullfile,一部分
From: https://blog.51cto.com/u_14480168/6342694

相关文章

  • 关于PHP正则表达式这回事
    ......
  • Nginx location 匹配规则
    =#用于标准uri前,需要请求字串与uri完全匹配,如果匹配成功就停止向下匹配并立即处理请求。~#区分大小写~*#不区分大写!~#区分大小写不匹配!~*#不区分大小写不匹配^#匹配正则开头$#匹配正则结尾\#转义字符。可以转.*?等*......
  • 正则表达式详解
    一、正则表达式概述正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。通俗的讲就是按照某种规则去匹配符合条件的字符串一个正则表达式是一种从左到右匹配主体字符串的模式。“Regularexpression”这个词比较拗口,我们常使用缩写......
  • 正则表达式
    符号解释示例说明.匹配任意字符b.t可以匹配bat/but/b#t/b1t等\w匹配字母/数字/下划线b\wt可以匹配bat/b1t/b_t等但不能匹配b#t\s匹配空白字符(包括\r、\n、\t等)love\syou可以匹配loveyou\d匹配数字\d\d可以匹配01/23/99等\b匹配单词......
  • js 关于 replace 取值、替换第几个匹配项
    〇、前言在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。一、替换第一个匹配项字符串替换letstrtest="0123测试replace456测试replace789测试replace0"console.log("原字符串:"+strtest)letoutstr=strtest.replace("测试","c......
  • 正则表达式
    什么是正则?正则就是:定义字符串出现规则的表达式。何时使用?字符串的切割、替换、验证以及Python爬虫时。JS中如何使用正则?语法:varreg=/正则规则/;一、正则的基础1、限定符?限定符表示?前面的一个字符可以出现0次或1次。r如:ab?c,意思是匹配出现0次b或者1次b的字符串。*限定符......
  • 正则表达式
    1.\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。2^匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“......
  • Linux三剑客(grep/awk/sed)及正则表达式
    Linux给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有Windows窗口界面直观方便。其实Linux有自己的独特的法宝,称之为三剑客:grep,awk和sed。你可以用这三件法宝很方便的处理数据:查找,分段,修改。正则表达式要想对文本和数据进行操作,一定离不开正则表达式,本文首......
  • 关于软件构造第一部分(PPT0、1、3)的总结复习
     学而时习之,不亦说乎?在学习新知识的路上,我们应时时复习,总结所学知识,归纳吸收以建立自己的知识体系。故此,我现在对软件构造这门课的第一部分进行一些总结 一、软件构造的多维度视图:共有三个维度:1.按阶段划分:构造时/运行时视图,2.按动态性划分:时刻/阶段视图,3.按构造对象层次划分......
  • 正则表达式的意义
    https://www.bilibili.com/video/BV1CS4y1C7ZY?p=60&spm_id_from=pageDriver&vd_source=29cb78abf51970a872824d0975a7bff5处理大量的字符串处理文字通过特殊符号的辅助,可以让linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。通常Linux运维工作,都是面临大......