正则表达式中的贪婪匹配和懒惰匹配
来源:互联网 发布:唐韦星追王晨星知乎 编辑:程序博客网 时间:2024/05/17 06:10
1.什么是正则表达式的贪婪与非贪婪匹配
如:String str="abcaxc";
Patter p="ab*c";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc
2.编程中如何区分两种模式
默认是贪婪模式(!);在量词后面直接加上一个问号?就是非贪婪模式。
量词:{m,n}:m到n个
*:任意多个
+:一个到多个
?:0或一个
3.程序实例
使用Snort的规则一条规则的一部分作为匹配文本,匹配出其中的content部分。
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegularTest { public static void main(String[] arg){ String text="(content:\"rcpt to root\";pcre:\"word\";)"; String rule1="content:\".+\""; //贪婪模式,或者.*,效果相同 String rule2="content:\".+?\""; //非贪婪模式 System.out.println("文本:"+text); System.out.println("贪婪模式:"+rule1); Pattern p1 =Pattern.compile(rule1); Matcher m1 = p1.matcher(text); while(m1.find()){ // 这里要使用find(),如果是使用matches,则默认对整个字符串进行匹配,匹配到字符串结尾 System.out.println("匹配结果:"+m1.group(0)); } System.out.println("非贪婪模式:"+rule2); Pattern p2 =Pattern.compile(rule2); Matcher m2 = p2.matcher(text); while(m2.find()){ System.out.println("匹配结果:"+m2.group(0)); } }}
执行结果:
阅读全文
0 0
- 正则表达式懒惰匹配,和贪婪匹配
- 正则表达式中的贪婪匹配和懒惰匹配
- 正则中的“贪婪匹配”和“懒惰匹配”
- 正则表达式的【贪婪匹配】和【懒惰匹配】
- 正则表达式 懒惰匹配与贪婪匹配
- 正则表达式学习笔记011--贪婪和懒惰的匹配
- javascript正则表达式之最长匹配(贪婪匹配)和最短匹配(懒惰匹配)
- (PHP)正则表达式-贪婪匹配与懒惰匹配的区别
- 正则表达式的贪婪匹配与懒惰匹配
- 正则表达式的贪婪匹配与懒惰匹配
- 正则表达式的贪婪匹配与懒惰匹配
- PHP正则表达式-贪婪与懒惰匹配
- PHP正则表达式-贪婪与懒惰匹配
- 正则表达式懒惰匹配
- 正则表达式的贪婪匹配(.*)和非贪婪匹配(.*?)
- 正则表达式的贪婪匹配和费贪婪匹配
- 正则表达式的贪婪匹配和非贪婪匹配
- 正则表达式的贪婪匹配和非贪婪匹配
- Android常见面试题总结(三)
- nexus3创建maven私有仓库——安装windows版
- cocoapods 常用命令总结
- C#操作Excel文档
- TCP建立连接和断开连接过程
- 正则表达式中的贪婪匹配和懒惰匹配
- 垂直竖向的Android TabLayout
- js 获取最后一个字符
- 设计模式之单例模式(线程安全)
- Struts2配置文件详解
- 比特币原理整理(一)
- java主线程等待所有子线程执行完毕在执行
- win10下导jar包入Maven仓库出错的解决方法
- Learning to remove soft shadows