@author YHC

public static void main(String[] args) {//选择最小和最大重复次数String a="{user=\"administrator\",password=\"root\"}";String b="user   =\"a\"";//注意=号之间有空格String c="user\r\n=\"c\"";//注意有换行符号//获取双引号之间的内容,分别获得a,b,c中的所有的用户的名称String regex="(?s)user.*?=(\".*?\")";match(regex,a);//user="administrator"match(regex,b);//user   ="a"match(regex,c);//user//="c"//上面的非常简单,注意以下事例//选择最小和最大重复数//注意以下几点,user =这个之间可能有空格//我们需要的结果是找出user='xxx'的信息,其余不要String notice="[{user='admin',password='admin'}," +"{user='yhc',password='yhc'}]";//也许大家会觉得.*?为什么需要?号,那么一下我们看看//有?和没有?的区别String regex1="user.*='(.*?)'";//user.*=之间没有?match(regex1, notice);//输出结果(错误):user='admin',password='admin'},{user='yhc',password='yhc'String regex2="user.*?='(.*?)'";//user.*=之间有?match(regex2, notice);//输出结果(正确)://user='admin'//user='yhc'//为什么上面就因为一个?号而有这么大的区别咧?//解释以上代码运行机制//有了匹配文本中的第一个user之后,引擎就会到达(.*),其中点号(.)可以//匹配任意字符,其中包括换行符,星号(*)则把它重复0次或更多次,请注意,//这里的星号(*)是贪心的,因此点星(.*)会匹配直到目标文件结束的所有的//内容,注意=====>>>>(.*)会吃了所有的目标文件内容,从第一个匹配//user的地方开始;//当(.*)把肚子吃饱之后,引擎才会试图去匹配在目标文本末尾的=//这个表达式,当然,一定会匹配失败,但这并不会代表此次匹配就结束了,//正则引擎会进行回溯backtrack,当匹配某一个位置之后//,正则表达式都会保存一个回溯位置,如果正则表达式匹配之后的文本失败后//那么正则引擎还可以回到这些位置//当=匹配匹配失败之后,引擎进行回溯,让(.*)放弃它的匹配中的一个//字符接着=会被再次尝试匹配,这次在文本中的最后一个字符的位置,//如果依然失败的话,那么引擎会再一次进行回溯在文件的倒数第2个字符出尝试匹配//这个过程会一直继续,直到=匹配成功位置,如果一直没有匹配成功,那么最终(.*)//会用完所有的回溯位置,然后正则匹配失败//如果在整个回溯的过程中=在某个点匹配成功,那么就会接着尝试匹配'如果'匹配//失败,引擎接着进行回溯,这个过程会一直重复,直到='(.*?)'可以被匹配为止//问题就出现在.*上,因为星号是贪心的,所以你们要注意哦!//我们需要使用lazy 懒惰 可以在后面放一个?使其变为懒惰//例如:(*?),(+?),(??) ,{1,100}? 都可以将其变为懒惰 }public static void match(String regex,String input){//创建正则对象Pattern pattern=Pattern.compile(regex);//匹配对象Matcher matcher=pattern.matcher(input);//输出匹配字符串while(matcher.find()){System.out.println(matcher.group());}}

如果以上有写错误的地方,请大家指出,thanks!

Java 正则中的(.*?)vs(.*)相关推荐

  1. java正则中REGEX = [\u4e00-\u9fa5]+是什么意思

    "\u4e00"和"\u9fa5"是unicode编码,并且正好是中文编码的开始和结束的两个值,所以这个正则表达式可以用来判断字符串中是否包含中文.正则表达式是 ...

  2. Java 正则中判断字符串是否为数字的两种方法

    方法1: public static boolean isNumber(String str){Pattern pattern = Pattern.compile("\\d+"); ...

  3. Java String 中的一些函数与正则的结合使用

    首先正则表达式在处理字符串问题时,真的非常强大. 正则可以帮助我们处理字符串的: 匹配, 选择, 编辑, 验证等问题. 正则中"\\"表示插入一个"\" 这里仅 ...

  4. java 正则regex_Java中的正则表达式– Java Regex示例

    java 正则regex Welcome to Regular Expression in Java. It's also called Regex in Java. When I started p ...

  5. java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合

    java正则校验密码必须是包含大小写字母.数字.特殊符号的8位以上四种组合 或者 其中任意三种组合 一.排除法和详细解释 1.排除大写字母.小写字母.数字.特殊符号中1种组合.2种组合.3种组合,那么 ...

  6. java 正则 提取数字_java使用正则提取字符串中的数字(例如提取短信中的验证码)详解...

    使用java正则可以很方便的从字符串中提取符合条件的内容. 1.提取字符串中所有的手机号: private void getPhoneNum(String smsBody) { Pattern pat ...

  7. Java正则工具类从地址中提取省市区

    Java正则工具类从地址中提取省市区 最近有个需求,从一串地址中提取出省市区,然后开始寻找解决方案,最终通过网上一些正则,再加上自己改动的,貌似弄成一个比较匹配的工具类,其中代码如下,有需要的可以参考 ...

  8. java正则匹配公司名称_【已解决】Java的正则表达式java.util.regex中的命名的组(named group)...

    [问题] 在折腾: 的过程中,需要用到命名的组,另外还用到替换中的引用命名的组. 想要搞懂如何使用. [解决过程] 1. 最开始是参考,官网手册: 中,并没有看到,如何使用命名的组. 2.参考: 得知 ...

  9. 关于Java正则和转义中\和\\和\\\\的理解

    一.作为Java的转义字符 1.在Java中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符.转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(\n ...

最新文章

  1. spring boot新建非web项目(无需依赖)
  2. livecd制作 centos
  3. 我的第一个.NET Core App Windows系统
  4. 如何成为有思想、创新的程序员
  5. python解析response的json_python:解析requests返回的response(json格式)说明
  6. python3 源码_7. Python3源码—Dict对象-阿里云开发者社区
  7. ScrollView嵌套ListView冲突问题的最优解决方式
  8. 如何学会阅读源码,看这篇就够了!
  9. 51单片机LCD12864程序移植到STM32F103C
  10. STM32F103—有关SIM900A模块的使用
  11. 精辟!一文看懂layout与PCB的关系
  12. win7下VS2012配置DirectShow+Opencv并且多摄像头采集
  13. QT 弹出pdf 或者网页【软件 help/about按钮】
  14. 加权随机采样 (Weighted Random Sampling)
  15. Win32无边框窗口
  16. 心田花开:解锁各类语文阅读理解答题技巧
  17. armbian开启ssh_armbian笔记
  18. MySQL数据库 sql语句及其含义
  19. Spring Cloud学习系列第一章:Eureka之服务注册与发现
  20. Vue的简单入门操作(笔记)与前后端crud

热门文章

  1. 奔驰中国新三包意味着什么?奔驰中国新三包是怎么回事?
  2. 环形数组(ringbuffer)
  3. 这样说期望薪资肯定没错!
  4. 商务英语信函常用基础资料
  5. 上海京东招聘 Java_【上海京东工资】java开发工程师待遇-看准网
  6. 基于SpringBoot之功能强大 医院挂号系统 医院管理系统 门诊预约挂号系统 社区医院诊所系统 医院问诊系统 医生就诊系统
  7. Docker Redis 哨兵 小实验
  8. docker compose 设置 ip地址
  9. Photoshop: Best Practices for Collaboration Photoshop教程之养成有利于多人合作的PS使用习惯 Lynda课程中文字幕
  10. 道路交通实时流量监控预测系统