`
techno_it
  • 浏览: 54625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java正则表达式匹配多行

阅读更多
在编写程序时,往往会遇到需要正则表达式匹配多行的情况,在网上看了好多方法,猛回头,突然发现多行是可以设置的,代码如下。
package com.my.test;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class MyTest {

	static String tt = "rsion=\"1.0\" encoding=\"UTF8\"?>\n<Service>\n<Service_Header>\n<processes currentprocess=\"1\" nextprocess=\"1\" total=\"1\">\n<process id=\"1\">\n<service_sn>1000001000009000001</service_sn>\n<service_id>00010000000100</service_id>\n<requester_id>0002</requester_id>\n<channel_id>01</channel_id>\n</process>\n</processes>\n<branch_id>802777777</branch_id>\n<service_time>20120323153800</service_time>\n<version_id>02</version_id>\n<service_response/>\n</Service_Header>\n<Service_Body>\n<request>\n<HR_ORG_NAME loop_num=\"1\" p_type=\"G\">\n<MANDT>500</MANDT>\n<PLVAR>01</PLVAR>\n<OTYPE>O</OTYPE>\n<OBJID>00000001</OBJID>\n<ISTAT>1</ISTAT>\n<BEGDA>20100101</BEGDA>\n<ENDDA>99991231</ENDDA>\n<LANGU>1</LANGU>\n<SEQNR>000</SEQNR>\n<AEDTM>20110413</AEDTM>\n<MC_SHORT>xxxx</MC_SHORT>\n<MC_STEXT>xxxx</MC_STEXT>\n<DEL/>\n</HR_ORG_NAME>\n<HR_ORG_NAME loop_num=\"2\" p_type=\"G\">\n<MANDT>500</MANDT>\n<PLVAR>01</PLVAR>\n<OTYPE>O</OTYPE>\n<OBJID>00000002</OBJID>\n<ISTAT>1</ISTAT>\n<BEGDA>20100101</BEGDA>\n<ENDDA>99991231</ENDDA>\n<LANGU>1</LANGU>\n<SEQNR>000</SEQNR>\n<AEDTM>20110413</AEDTM>\n<MC_SHORT>xxxx</MC_SHORT>\n<MC_STEXT>xxxx</MC_STEXT>\n<DEL/>\n</HR_ORG_NAME>\n<HR_ORG_NAME loop_num=\"3\" p_type=\"G\">\n<MANDT>500</MANDT>\n<PLVAR>01</PLVAR>\n<OTYPE>O</OTYPE>\n<OBJID>00000003</OBJID>\n<ISTAT>1</ISTAT>\n<BEGDA>20100101</BEGDA>\n<ENDDA>99991231</ENDDA>\n<LANGU>1</LANGU>\n<SEQNR>000</SEQNR>\n<AEDTM>20110413</AEDTM>\n<MC_SHORT>xxxx</MC_SHORT>\n<MC_STEXT>xxxx</MC_STEXT>\n<DEL/>\n</HR_ORG_NAME>\n</request>\n<ext_attributes>\n<T_KEY_LABEL>0502</T_KEY_LABEL>\n<KEY_LABEL>0001</KEY_LABEL>\n</ext_attributes>\n<response/>\n</Service_Body>\n</Service>";
	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		System.out.println(MyTest.class.getResource(".").getPath().substring(1));
//		List<String> tt1 = new ArrayList<String>();
//		tt1.add(tt);
//		writeFile(tt1);
		Matcher  requstMatcher = Pattern.compile("(.*)<[rR][eE][qQ][uU][eE][sS][tT]>(.*)</[rR][eE][qQ][uU][eE][sS][tT]>(.*)",Pattern.MULTILINE | Pattern.DOTALL).matcher(tt);
		String requestContent = "";
		if(requstMatcher.find())
			requestContent =requstMatcher.group(2);
		requstMatcher = Pattern.compile("<(([A-Z]|[a-z]|_|\\d){1,})\\s*loop_num=\"\\d+\"\\s*p_type\\s*=\\s*\"([A-Z]|[a-z])\">").matcher(requestContent);
		String tableName = "";
		if(requstMatcher.find())
			tableName = requstMatcher.group(1);
		requstMatcher = Pattern.compile("<" + tableName + "\\s{1,}loop_num=\"\\d{1,}\"\\s{1,}p_type=\"[a-z]|[A-Z]\">(.*?)>\\s*</" + tableName + ">",Pattern.MULTILINE | Pattern.DOTALL).matcher(requestContent);
		while(requstMatcher.find())
		{
			String datas = requstMatcher.group(1);
			Matcher requstDataMeta = Pattern.compile("<([^/].*?)>").matcher(datas);
			while(requstDataMeta.find())
			{
				String propertyName = requstDataMeta.group(1).trim();
				String val = "";
				Matcher requstItem = Pattern.compile("<" + propertyName + ">(.*?)</" + propertyName,Pattern.MULTILINE).matcher(datas);
				if(requstItem.find())
					val = requstItem.group(1);
				System.out.println("属性是:" + propertyName + " 值是:" + val);
			}
			System.out.println("____________________________________________________________________________________________________________");
		}
		StringBuffer tt = new StringBuffer();
		tt.append("and").append(" ").append("fal").append("=").append("#dal#");
		System.out.println(tt.delete(0, tt.length()).toString());
	}
}
分享到:
评论

相关推荐

    Java正则表达式测试工具

    Java正则表达式测试工具是面向开发者和爱好者的一款实用程序,它可以帮助用户验证和调试他们的正则表达式。在Java编程环境中,正则表达式是一个强大的字符串处理工具,广泛用于数据验证、文本搜索和替换等任务。这款...

    JAVA 正则表达式测试器

    - `Matcher.find()`: 查找输入字符串中与正则表达式匹配的部分,返回true表示找到至少一次匹配。 - `Matcher.group()`: 返回上一次匹配成功的子字符串。 - `Matcher.replaceAll(String replacement)`: 使用给定的...

    java正则表达式截取demo下载即可运行

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。这个“java正则表达式截取demo”提供了一个可以直接运行的示例,帮助开发者理解如何在Java中使用正则...

    Java正则表达式入门范例

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、数据清洗等。本篇文章将深入探讨Java中的...

    java-正则表达式-正则表达式元素介绍

    正则表达式是Java编程语言中的一个重要工具,用于处理字符串,包括匹配、分割和替换等操作。在Java中,你可以使用`matches()`方法来检查一个字符串是否完全符合某个正则表达式模式,`split()`方法将字符串根据正则...

    javaScript 正则表达式详解

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 JavaScript 中的正则表达式提供了强大的字符串匹配和操作能力,广泛应用于字符串处理和数据验证等领域。

    正则表达式教程合集(各种语言的,超全)

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它由特殊字符和普通字符组成,能够灵活地表示各种复杂的字符串模式。本教程合集涵盖了多种编程语言中的正则表达式规则和应用,包括...

    JAVA正则表达式

    Java正则表达式是Java编程语言中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。在Java中,正则表达式通常与`java.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。本...

    Java正则表达式详解

    - `static Pattern compile(String regex, int flags)`:与第一个方法类似,但增加了标志参数的指定,允许对正则表达式匹配进行额外的控制,比如大小写不敏感、多行模式、点匹配所有字符等。 - `static boolean ...

    适合于js和java的正则表达式

    正则表达式是一种强大的文本处理工具,广泛应用于JavaScript和Java等编程语言中,用于执行复杂的字符串匹配、查找、替换和提取等操作。本教程将深入探讨JavaScript和Java中的正则表达式及其应用场景。 首先,我们...

    Java正则表达式规则(技术文档)

    `matches()`方法用于检查字符串是否与正则表达式匹配,例如`"123".matches("\\d+")`会返回`true`。`split()`方法可以使用正则表达式来分割字符串,比如`"a-b-c".split("-")`将返回数组`["a", "b", "c"]`。`...

    Java正则表达式教程

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。本教程将深入讲解Java正则表达式的概念、语法以及常见用法,帮助开发者掌握这一核心技能。 在Java中,...

    Java 正则表达式详解

    总结来说,Java正则表达式提供了一套强大的工具来处理文本,通过理解基本的正则表达式语法和Java提供的相关API,开发者可以有效地搜索、替换和解析文本,满足各种复杂的需求。无论是在开发、数据分析还是日志分析等...

    精通正则表达式&正则表达式经典实例

    9. **实例应用**:正则表达式广泛应用于文本编辑器(如vim、emacs)、编程语言(如JavaScript、Python、Java)和搜索引擎(如grep、findstr)。例如,用于验证邮箱格式、手机号码、提取URL等。 通过《精通正则...

    常用正则表达式 正则表达式

    正则表达式(Regular Expression...在不同的编程语言中,如JavaScript、Python、Java等,正则表达式的实现可能会有所不同,但基本的语法和概念是相通的。在实际使用时,根据具体语言的文档进行学习和实践是非常必要的。

    个人收集的JAVA正则表达式

    Java正则表达式是编程语言Java中的一个强大工具,用于处理字符串模式匹配和搜索替换。在Java中,正则表达式通常与`java.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。这个个人...

    正则表达式素材5

    4. **选择与分支**:使用竖线(|)表示或关系,允许正则表达式匹配多个不同的模式。 5. **位置匹配**:如锚点^表示行首,$表示行尾,\b表示单词边界,这些可以帮助精确定位匹配的位置。 6. **预查与环视**:预查...

    java正则表达式(ppt文档).ppt

    Java正则表达式是一种强大的文本处理工具,它允许程序员通过使用模式匹配来高效地查找、提取、替换或删除文本中的特定字符序列。正则表达式由普通字符和元字符组成,其中元字符具有特殊的含义,比如`*`代表零个或多...

    java编写的正则表达式解析器

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和操作字符串。在Java编程语言中,实现正则表达式解析器可以帮助我们更高效地处理字符串,理解正则表达式的内部工作原理,并且可以自定义扩展其功能。本文...

    运用正则表达式匹配所有表名

    这种方法特别适用于使用支持正则表达式匹配的编程语言。 扩展正则表达式的匹配模式,例如使用贪婪模式,可以进一步提高其灵活性。贪婪模式意味着正则表达式引擎会尽可能多地匹配字符。例如,如果使用贪婪模式的`.*`...

Global site tag (gtag.js) - Google Analytics