正则断言有哪几种?正则如何实现与或非?
2023-03-07 09:44:03 时间
正则断言
1. (?=X )
零宽度正先行断言。仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。
例如,/w+(?=/d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
2. (?!X)
零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,/w+(?!/d) 与后不跟数字的单词匹配,而不与该数字匹配 。
3. (?<=X)
零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。
例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
4. (?<!X)
零宽度负后发断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。
例如,(?<!19)99 与不跟在 19 后面的 99 的实例匹配
5.非捕获组
(?:),非捕获组,这个组没有编号,不能用来后向引用,只能当做断言。
(?:X),在正则中表示所匹配的子组X不作为结果输出
与或非
- “与”是最简单的关系,它表示若干个元素必须同时相继出现,比如匹配单词cat,其实就是要求字符c、字符a和字符t必须同时连续出现。
- 匹配模式A或者模式B(PatternA|PatternB)
- ^(?:(?!(.*components.*)).)+$,文本开头的右边内容,不出现任何符合断言的内容
相关文章
- Java NIO详解
- Java RMI入门
- Python-OpenCV教程-4
- java io库_Java IO类库之PipedWriter
- keyfactory java_Java KeyFactory getAlgorithm()用法及代码示例
- python TCP通信实例
- 【Java】Java人民币单位转换:分转换成元
- java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的区别
- python:isinstance()和issubclass()
- 关于 java:MyBatis 中的多线程服务器客户端
- Python Flask教程(一)
- web python -- WSGI接口
- 17 Python - 迭代
- PYTHON2.day07
- java join yield_java多线程 join/yield
- Java UDP通信:Java DatagramSocket类和DatagramPacket类
- 1.5的java,Java 1.5新特性
- java stringbuffer原理_java String、StringBuffer、StringBuilder 的区别
- python las转txt
- hadoop java文件_使用java api操作Hadoop文件