贪婪模式和非贪婪模式

 1 package regex;
 2
 3 import java.util.regex.Matcher;
 4 import java.util.regex.Pattern;
 5
 6 public class regexDemo {
 7     public static void main(String[] args) {
 8         String str1 = "19900330199012121990111119900220";
 9         String str = "((\\d{4})(\\d{2})(\\d{2}))";
10         Pattern p = Pattern.compile(str);
11         Matcher m = p.matcher(str1);
12
13         while (m.find()) {
14             // group分组左括号优先匹配。
15             System.out.print("出生日期" + m.group(1));
16             System.out.print("....");
17             System.out.print("出生年" + m.group(2) + " ");
18             System.out.print("出生月" + m.group(3) + " ");
19             System.out.print("出生日" + m.group(4) + " ");
20             // 返回以前匹配的初始索引。
21             System.out.print("start:" + m.start() + " ");
22             // 返回匹配后的位置。
23             System.out.println("end:" + m.end());
24         }
25
26         String str2 = "<table><td>鱼鱼枫</td><td>这个选手</td><td>野路子</td></table>";
27         //贪婪模式,指的是.*会匹配所有的信息,此处会找整个信息。
28         p = Pattern.compile("<td>(.*)</td>");
29         m = p.matcher(str2);
30         while(m.find()){
31             System.out.println(m.group(1));
32         }
33         //找到的结果:鱼鱼枫</td><td>这个选手</td><td>路子野
34
35         //非贪婪模式,仅仅只是匹配第一个结果,*?表示使用非贪婪模式
36                 p = Pattern.compile("<td>(.*?)</td>");
37                 m = p.matcher(str2);
38                 while(m.find()){
39                     System.out.print(m.group(1));
40                     System.out.print("start:" + m.start() + " ");
41                     // 返回匹配后的位置。
42                     System.out.println("end:" + m.end());
43                 }
44                 //找到的结果:鱼鱼枫</td><td>这个选手</td><td>路子野
45     }
46 }
时间: 2024-08-04 14:38:38

贪婪模式和非贪婪模式的相关文章

XCode工程中ARC模式与非ARC模式共用(转)

Xcode 项目中经常会融合一些老的代码,它们可能采用非ARC的模式.混合编译时,就会碰到编译出错的情况. 如何共用ARC模式和非ARC模式呢? XCode除了提供整个项目是否使用ARC模式的选择外,还可以对单个文件添加标签来指定是否采用ARC模式. 添加标签的方法: 打开:你的target -> Build Phases -> Compile Sources. 双击对应的 *.m 文件 在弹出窗口中输入上面提到的标签-fobjc-arc / -fno-objc-arc (1)如果你的项目使用

Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>';   reg.RegEx  := '<.*>';

Oracle归档模式与非归档模式设置

(转自:http://www.cnblogs.com/spatial/archive/2009/08/01/1536429.html) Oracle的日志归档模式可以有效的防止instance和disk的故障,在数据库故障恢复中不可或缺,由于oracle初始安装模式为非归档模式,因此需要将其设置为归档模式,下面就其方法和步骤做一些总结,虽然简单,但这是管理oracle数据库必备之工,故有如下陈述. 例子是建立在windowsXP和oracle11g的环境下,如有环境不同,仅供参考. Oracle

oracle11g设置归档模式和非归档模式

1.首先查看当前数据库是否处于归档模式 可使用如下两种方式查看 1.1 select name, log_mode from v$database; log_mode的值为 NOARCHIVELOG 表示数据库处于非归档模式 log_mode的值为 ARCHIVELOG 表示数据库处于归档模式 1.2 archive log list; (此方法需要 as sysdba) Database log mode 的值为 No Archive Mode Automatic archival 的值为 D

怎样将Oracle数据库设置为归档模式及非归档模式

1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo log 重做日志(记录数据库的更改). 归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换时,后台进程ARCH会将重做日志的内容保存到归档日志中,当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.在Oracle10g中,只要

MySQL MHA--故障切换模式(GTID模式和非GTID模式)

GTID和非GTID故障切换模式选择 MySQL 5.6版本引入GTID来解决主从切换时BINLOG位置点难定位的问题,MHA从0.56版本开始支持基于GTID的复制,在切换时可以采用GTID模式和非GTID模式两种模式进行切换,如何在发生故障切换时如何判断采用哪种切换方式呢? 在MHA/MasterFailover.pm的do_master_failover方法中定义了"主库宕机"情况下的故障切换流程,其中第一步就是检查配置文件和确定故障切换模式 相关代码: my ( $server

python 正则贪婪模式和非贪婪模式

贪婪模式:在表达式匹配成功的前提下,总是尽可能多的匹配字符飞天蓝模式:在表达式匹配成功的前提下,总是尽量少的匹配字符 1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import re 4 5 def test(): 6 string = "abc123456789sdsddskcas" 7 print "a(.*)c贪婪模式匹配结果:" 8 print re.findall(r"a(.*)c&quo

正则表达式中的贪婪模式与非贪婪模式详解

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “{m,n}?”.“{m,}?”.“??”.“*?”和“+?”.

贪婪模式与非贪婪模式

一.概念 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c). 非贪婪匹配:就是匹配到结果就好,就少的匹配字符.如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c). 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式