美文网首页
正则表达式写得好,能够胜过算法

正则表达式写得好,能够胜过算法

作者: 鼾声鼾语 | 来源:发表于2020-04-29 14:19 被阅读0次

正则表达式为:(?<=左侧的内容).*(?=右侧的内容)
比如:字符串aaabbbcccdddeee,想要获取"ccc"
正则表达式可以参考以下四种示例:

(?<=aaabbb).*(?=dddeee)
(?<=bbb).*(?=dddeee)
(?<=aaabbb).*(?=ddd)
(?<=bbb).*(?=ddd)
如果要包括左右两侧的内容,则可以是:左侧的内容(.*?)右侧的内容
比如上面的字符串要获取bbbcccddd,
正则表达式是:bbb(.*?)ddd

捕获两个字符之间的字符串信息,类似就是AcakeB这个字符串中提取cake。
当时只想到如下的表达式:

A.*B

上述是将以A开头和以B结尾的字符串提取出来,但是本意是不想要有A和B了。通过查资料发现了如下写法

(?<=A).*(?=B)

继续查了一点资料,又学到一点知识。

表达式    描述
(?:pattern) 非捕获匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。
(?=pattern) 非捕获匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,不进行存储供以后使用。
(?!pattern) 非捕获匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,不进行存储供以后使用
(?<=pattern) 非捕获匹配,反向肯定预查,与正向肯定预查类似,但是方向相反。
(?<!pattern) 非捕获匹配,反向否定预查,与正向否定预查类似,但是方向相反。

举例:

String str1 = "5A2118DAF110220D0E0F10111213A5A55A2118DAF1102314FFFFFFFFFFFF44A55A2118DAF1101";
            // String[] strsplit = str1.split("A55A.*");
            String[] strsplit = str1.split("(?=A55A)");        
            for (int i = 0; i < strsplit.length; i++) {
                System.out.println(strsplit[i]);   
            }
            

答案:

5A2118DAF110220D0E0F10111213A5
A55A2118DAF1102314FFFFFFFFFFFF44
A55A2118DAF1101

相关文章

  • 正则表达式写得好,能够胜过算法

    正则表达式为:(?<=左侧的内容).*(?=右侧的内容)比如:字符串aaabbbcccdddeee,想要获取"cc...

  • 需要掌握的技术

    TypescriptRxjsNgrxHTTP正则表达式算法设计模式

  • 编译原理随记

    NFA的模拟:算法第四版上面的正则表达式篇,下载地址正则表达式转NFA算法:Thompson's construc...

  • 匹配次数

    import re 练习:写一个正则表达式能够匹配所有的整数字符串

  • 正则表达式的匹配原理是什么

    正则表达式是如何实现查找匹配的? 1,正则表达式的使用2,正则表达式匹配搜索算法3,正则表达式引擎:DFA和NFA...

  • #华与华书房#华杉注四书《孟子》【158】

    仁能够胜过不仁,就像水能够灭火一样,这是毫无疑问的,就像真话能胜过假话,真情能胜过假意。但是,有人说今天这社会坏透...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

  • 算法:".*"正则表达式实现

    算法:".*"正则表达式实现 题目描述:请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示...

  • Chapter 4字符串

    KMS算法 KMP算法视频讲解,例子说明的很详细 Re正则表达式的内容以后再看 书/中国大学慕课 爬虫

  • 正则表达式

    要想代码写得好,正则表达式少不了。 正则表达式由 普通字符(a到z) 特殊字符(又称元字符,比如反斜线,*$()等...

网友评论

      本文标题:正则表达式写得好,能够胜过算法

      本文链接:https://www.haomeiwen.com/subject/urwgwhtx.html