在编写程序时,往往会遇到需要正则表达式匹配多行的情况,在网上看了好多方法,猛回头,突然发现多行是可以设置的,代码如下。
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编程环境中,正则表达式是一个强大的字符串处理工具,广泛用于数据验证、文本搜索和替换等任务。这款...
- `Matcher.find()`: 查找输入字符串中与正则表达式匹配的部分,返回true表示找到至少一次匹配。 - `Matcher.group()`: 返回上一次匹配成功的子字符串。 - `Matcher.replaceAll(String replacement)`: 使用给定的...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。这个“java正则表达式截取demo”提供了一个可以直接运行的示例,帮助开发者理解如何在Java中使用正则...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、数据清洗等。本篇文章将深入探讨Java中的...
正则表达式是Java编程语言中的一个重要工具,用于处理字符串,包括匹配、分割和替换等操作。在Java中,你可以使用`matches()`方法来检查一个字符串是否完全符合某个正则表达式模式,`split()`方法将字符串根据正则...
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 JavaScript 中的正则表达式提供了强大的字符串匹配和操作能力,广泛应用于字符串处理和数据验证等领域。
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它由特殊字符和普通字符组成,能够灵活地表示各种复杂的字符串模式。本教程合集涵盖了多种编程语言中的正则表达式规则和应用,包括...
Java正则表达式是Java编程语言中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。在Java中,正则表达式通常与`java.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。本...
- `static Pattern compile(String regex, int flags)`:与第一个方法类似,但增加了标志参数的指定,允许对正则表达式匹配进行额外的控制,比如大小写不敏感、多行模式、点匹配所有字符等。 - `static boolean ...
正则表达式是一种强大的文本处理工具,广泛应用于JavaScript和Java等编程语言中,用于执行复杂的字符串匹配、查找、替换和提取等操作。本教程将深入探讨JavaScript和Java中的正则表达式及其应用场景。 首先,我们...
`matches()`方法用于检查字符串是否与正则表达式匹配,例如`"123".matches("\\d+")`会返回`true`。`split()`方法可以使用正则表达式来分割字符串,比如`"a-b-c".split("-")`将返回数组`["a", "b", "c"]`。`...
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.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。这个个人...
4. **选择与分支**:使用竖线(|)表示或关系,允许正则表达式匹配多个不同的模式。 5. **位置匹配**:如锚点^表示行首,$表示行尾,\b表示单词边界,这些可以帮助精确定位匹配的位置。 6. **预查与环视**:预查...
Java正则表达式是一种强大的文本处理工具,它允许程序员通过使用模式匹配来高效地查找、提取、替换或删除文本中的特定字符序列。正则表达式由普通字符和元字符组成,其中元字符具有特殊的含义,比如`*`代表零个或多...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和操作字符串。在Java编程语言中,实现正则表达式解析器可以帮助我们更高效地处理字符串,理解正则表达式的内部工作原理,并且可以自定义扩展其功能。本文...
这种方法特别适用于使用支持正则表达式匹配的编程语言。 扩展正则表达式的匹配模式,例如使用贪婪模式,可以进一步提高其灵活性。贪婪模式意味着正则表达式引擎会尽可能多地匹配字符。例如,如果使用贪婪模式的`.*`...