`

JAVA Pattern和Matcher 的用法

    博客分类:
  • java
 
阅读更多

 String上可使用正则表达式的操作,实际上是利用了java.util.regex.Pattern与java.util.regex.Matcher的功能。当调用String的matches()方法时,实际上是调用Pattern的静态方法matches(),这个方法会返回boolean值,表示字符串是否符合正则表达式。
如果想要将正则表达式视为一个对象来重复使用,可以使用Pattern的静态方法compile()进行编译。compile()方法会返回一个Pattern的实例,这个实例代表正则表达式,之后就可以重复使用Pattern实例的matcher()方法来返回一个Matcher的实例,代表符合正则式的实例,这个实例上有一些寻找符合正则式条件的方法可供操作。

function ajaxExportExcel(formName){
		var type = "${isBranch}";
		
		//if(type=="0"){
		//	Ext.MessageBox.alert("警告", "没有数据!");
		//	return;
		//}
		
		var agentName = "agentName:" + Ext.getCmp("agentName").getValue();
		
		var system = "system:" + Ext.getCmp("system_id").getValue();
		
		if (Ext.getCmp("system_id").getRawValue()=='') {
		    system = "system:";
		}
		
		var officeNo = "officeNo:" + Ext.getCmp("officeNo").getValue();
		var status = "status:" + Ext.getCmp("status_id").getValue();
		if (Ext.getCmp("status_id").getRawValue()=='') {
		    status = "status:";
		}
		var startTime = "startTime:" + Ext.getCmp("startTime_index_1").getRawValue();
		var endTime = "endTime:" + Ext.getCmp("startTime_index_2").getRawValue();
		var zData = "zData:" + Ext.getCmp("zData").getValue();

		var params = agentName + "_@_" + system + "_@_" + officeNo + "_@_" 
		+ status + "_@_"+ startTime + "_@_" + endTime + "_@_" + zData;
		
		var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"请稍候..."});
		myMask.show();
		
		Ext.Ajax.request({
			url: "./report!exportqueryHistorysReport.action",
			timeout: 900000,  
		    method: 'post',
			params: {queryInfo: params},
			success:function(action){
				var response = action.responseText;
				if(response.indexOf('file:')==-1){
					myMask.hide();
					Ext.MessageBox.show({
	   					title: "导出报表失败",
		           		msg: response,
		           		buttons: Ext.MessageBox.OK,
		           		icon: Ext.MessageBox.INFO
		       		});
				}else{
					var reportFileName = response.substring(5);
					var newWindow = new Ext.Window({
		                	id: 'winExportReport',
		                	title: this.title,
		                	width: 850,
		                	layout: 'fit',
		                	collapsible: true,
		                	height: this.height,
		                	frame: true,
		                	modal: true,
		                	html: '<iframe id="iframe1" src="../report/download?filePath='+reportFileName+'" width="100%" height="500"/>'
						});
		            newWindow.addListener("show", function(){delayCloseWindow(myMask);}); 
		            newWindow.addListener("close", function(){myMask.hide();});
	                newWindow.show();
	            }
            },
		    failure: function(action){ 
				var response = action.responseText;
		       	myMask.hide(); 
		       	Ext.MessageBox.show({
					title: "导出报表失败",
		           	msg: response,
		           	buttons: Ext.MessageBox.OK,
		           	icon: Ext.MessageBox.INFO
		       	});
			}
		});
	}

 

private static Pattern configSummaryQueryParameterPatternhy = 
		Pattern.compile("^agentName:(.*)_@_system:(.*)_@_officeNo:(.*)_@_status:(.*)_@_startTime:(.*)_@_endTime:(.*)_@_zData:(.*)$");


public String exportqueryHistorysReport()throws Exception{
		//数据渲染器选择标记
		ServletActionContext.getRequest().setAttribute(
				com.travelsky.bravo.core.ui.Constants.AJAX_HANDLE_KEY,
				com.travelsky.bravo.core.ui.Constants.AJAX_HANDLE_VALUE);
		try{
	        String queryInfo = ServletActionContext.getRequest().getParameter("queryInfo").trim();
			Matcher matcher = configSummaryQueryParameterPatternhy.matcher(queryInfo);
			if (!matcher.find()) {
				throw new RuntimeException("wrong parameters:" + queryInfo);
			}
			SecUser currentUser = RequestHandler.getContextRequestHandler().getCurrentUser();
			String islocaluse=currentUser.getBranchId().getIslocaluse();
			String fileName = reportManager.generateConfigHistorysReport(
					StringUtils.trim(matcher.group(1)), 
					StringUtils.trim(matcher.group(2)), 
					StringUtils.trim(matcher.group(3)), 
					StringUtils.trim(matcher.group(4)), 
					StringUtils.trim(matcher.group(5)), 
					StringUtils.trim(matcher.group(6)),
					StringUtils.trim(matcher.group(7)),islocaluse); 
			
			ServletActionContext.getRequest().setAttribute(
					Constants.AJAX_HANDLE_STATUS,  "Y");
			ServletActionContext.getRequest().setAttribute(
					Constants.AJAX_HANDLE_MSG,  "file:" + fileName);
		}catch(Exception e){
			logger.error(e.getMessage(), e);
			ServletActionContext.getRequest().setAttribute(
					Constants.FORM_AJAX_SUBMIT_STATUS,
					Constants.FORM_AJAX_SUBMIT_FAILURE);
			ServletActionContext.getRequest().setAttribute(
					Constants.FORM_AJAX_SUBMIT_MSG,
					e.getMessage());
		}
		return JSON_DATA_RENDER_CHAIN;
	}

 

分享到:
评论

相关推荐

    java Pattern Matcher的理解简记

    总结一下,Java的Pattern和Matcher提供了强大的正则表达式功能,通过编译Pattern对象和使用Matcher对象进行匹配操作,可以高效地处理字符串。深入学习这两者,有助于理解和应用正则表达式,从而在处理字符串相关任务...

    JAVA正则表达式--Pattern和Matcher

    ### JAVA正则表达式——Pattern和Matcher详解 #### 一、引言 随着JDK 1.4的发布,Java终于内置了自己的正则表达式API,这对于Java开发者来说无疑是个福音,意味着不再需要依赖第三方库就能高效地处理文本数据。Java...

    JAVA正则表达式Pattern和Matcher

    JAVA的正则表达式主要通过Pattern和Matcher两个核心类实现。Pattern用于编译正则表达式并存储模式,而Matcher则是执行实际匹配操作的对象。通过不同的方法,如matches、split和find,我们可以对字符串进行精确或灵活...

    Java正则表达式Pattern和Matcher原理详解

    除了上述提到的`Pattern`和`Matcher`类,Java的`String`类也提供了`split`方法,可以按照正则表达式来分割字符串。比如,`String[] str = p.split("好456456像:0532214是")`会根据数字来分割给定的字符串,返回一个...

    JAVA正则表达式 Pattern和Matcher

    `java.util.regex`包提供了`Pattern`和`Matcher`两个核心类,它们协同工作,使得开发者能够利用正则表达式进行复杂的字符串操作。 `Pattern`类是正则表达式的核心,它将文本模式编译成一个内部表示,以便高效地执行...

    java正则表达式Pattern,Matcher

    Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心类:`Pattern`和`Matcher`。 #### 二、Pattern类 `Pattern`类代表预编译的正则表达式。它提供了静态方法`compile()`用于创建`...

    java_正则表达式pattern类Matcher类_(字符串匹配)

    在Java中,正则表达式的处理主要涉及到两个核心类:`Pattern`和`Matcher`。 `Pattern`类是用于编译正则表达式的,它将文本模式转化为可匹配的模式对象。在给定的例子中,`Pattern.compile("[,\\s]+")`编译了一个...

    java正则表达式之Pattern与Matcher类详解

    本文将深入探讨Java正则表达式中的`Pattern`和`Matcher`类,这两个类是处理正则表达式的核心。 首先,`Pattern`类是用于编译正则表达式并创建匹配模式的对象。在Java中,使用`Pattern.compile()`方法编译正则表达式...

    pattern类使用方法

    下面我们将深入探讨`Pattern`类的使用方法以及与之相关的`Matcher`类。 ### `Pattern`类 `Pattern`类表示一个正则表达式的编译形式,它是不可变的。在使用正则表达式进行匹配操作之前,必须先将正则表达式编译为`...

    详解正则表达式Matcher类中group方法

    一旦我们得到了Pattern对象,我们就可以使用这个对象的matcher方法来创建Matcher对象,方法的参数是待匹配的字符串。 下面是一个具体的例子,假设我们有一个字符串"123ra***aj234adf12322ad222jsk22",我们想要匹配...

    Java rexexp Pattern

    在Java中,`java.util.regex`包提供了Pattern和Matcher类来支持正则表达式的使用。下面将详细探讨这个主题。 首先,`Pattern`类是正则表达式的编译表示形式,它通过`compile`方法创建,并且可以多次复用。例如,...

    java正则表达式验证

    java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效

    PatternMatcher:测试您自己的正则表达式的小程序!

    在"PatternMatcher"中,你可以逐个尝试这些元素,了解它们的功能和用法。 此外,Java的`Matcher`类还提供了多种方法来处理匹配结果,如`find()`用于查找下一个匹配项,`matches()`检查整个字符串是否匹配,`group()...

    正则表达式在Java代码中的使用

    在Java中,正则表达式是通过java.util.regex包提供的类来实现的,主要包括Pattern和Matcher两个核心类。这篇博客将深入探讨正则表达式在Java代码中的应用。 首先,创建一个正则表达式需要使用Pattern类。Pattern类...

    java正则表达式pattern

    Java提供的`Pattern`和`Matcher`类为开发者提供了便利的接口,使得在Java应用程序中使用正则表达式变得简单高效。 总结一下,Java正则表达式Pattern是通过`Pattern.compile()`方法编译的正则表达式,用于创建匹配器...

    浅谈Java中正则表达式的优化方法

    ### 浅谈Java中正则表达式的优化方法 在日常的软件开发过程中,正则表达式作为一种强大的文本处理工具被广泛应用于数据验证、文本搜索与替换等场景之中。尤其是在Java语言环境中,`java.util.regex`包提供了丰富的...

    一个java正规表达式工具类

    在Java中,正则表达式(Regular Expression)是通过Pattern和Matcher类来实现的。这篇博客文章可能详细介绍了如何创建一个自定义的工具类,整合了常见的正则表达式功能,方便在项目中复用。 正则表达式是一种模式...

    Java一些常用验证整理

    这里的【标题】"Java一些常用验证整理"和【描述】"Java一些常用验证整理,附有有关代码"指的是收集并整理了一些常见的Java验证方法。这些方法主要用于检查用户输入、数据交换等场景中的字符串格式,以确保其合法性。...

    java正则表达式.zip

    在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心类。 **1. Pattern类** Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化...

Global site tag (gtag.js) - Google Analytics