您的位置:首页 > 编程语言 > Java开发

java 正则表达式获取指定两个字符串之间内容

2017-07-14 00:00 871 查看
java 正则表达式获取指定两个字符串之间内容

xml解析利用正则表达式获取指定两个字符串之间内容

在遇到解析复杂java xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗?此时不仅代码繁琐,而且准确率还不是那么高,采用此种方式,java可以获取指定两种字符串之间的任意xml文本。

package com.starit.analyse.util;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class DealStrSub {

/**

* 正则表达式匹配两个指定字符串中间的内容

*

*

*/

public static List<String> getSubUtil(String soap,String rgex){

List<String> list = new ArrayList<String>();

Pattern pattern = Pattern.compile(rgex);// 匹配的模式

Matcher m = pattern.matcher(soap);

while (m.find()) {

int i = 1;

list.add(m.group(i));

i++;

}

return list;

}

/**

* 返回单个字符串,若匹配到多个的话就返回第一个,方法与getSubUtil一样

*

*

*

*/

public static String getSubUtilSimple(String soap,String rgex){

Pattern pattern = Pattern.compile(rgex);// 匹配的模式

Matcher m = pattern.matcher(soap);

while(m.find()){

return m.group(1);

}

return "";

}

/**

* 测试

*

*/

public static void main(String[] args) {

String str = "abc3443abcfgjhgabcgfjabc";

String rgex = "abc(.*?)abc";

System.out.println(getSubUtil(str,rgex));

System.out.println(getSubUtilSimple(str, rgex));

}

}

若给出的正则表达式rgex匹配不到的话,就会返回空,这两个方法运用得当,解析复杂的xml就迎刃而解了。

运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java it 编程