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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: xml解析利用正则表达式获取指定两个字符串之间内容 在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗?此时不仅代码繁琐,而且准确率还不是那么高,采用此种方式,可以获取指定两种字符串之间的任意xml文本。

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

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

[java] view plain copy

  1. package com.starit.analyse.util;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. public class DealStrSub {
  8.     /**
  9.      * 正则表达式匹配两个指定字符串中间的内容
  10.      * @param soap
  11.      * @return
  12.      */
  13.     public static List<String> getSubUtil(String soap,String rgex){
  14.         List<String> list = new ArrayList<String>();
  15.         Pattern pattern = Pattern.compile(rgex);// 匹配的模式
  16.         Matcher m = pattern.matcher(soap);
  17.         while (m.find()) {
  18.             int i = 1;
  19.             list.add(m.group(i));
  20.             i++;
  21.         }
  22.         return list;
  23.     }
  24.     /**
  25.      * 返回单个字符串,若匹配到多个的话就返回第一个,方法与getSubUtil一样
  26.      * @param soap
  27.      * @param rgex
  28.      * @return
  29.      */
  30.     public static String getSubUtilSimple(String soap,String rgex){
  31.         Pattern pattern = Pattern.compile(rgex);// 匹配的模式
  32.         Matcher m = pattern.matcher(soap);
  33.         while(m.find()){
  34.             return m.group(1);
  35.         }
  36.         return "";
  37.     }
  38.     /**
  39.      * 测试
  40.      * @param args
  41.      */
  42.     public static void main(String[] args) {
  43.         String str = "abc3443abcfgjhgabcgfjabc";
  44.         String rgex = "abc(.*?)abc";
  45.         System.out.println(getSubUtil(str,rgex));
  46.         System.out.println(getSubUtilSimple(str, rgex));
  47.     }
  48. }

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

运行结果如下:

原文地址http://www.bieryun.com/614.html

相关文章
|
28天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
102 60
|
15天前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
18天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
18天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
18天前
|
JSON 自然语言处理 Java
这款轻量级 Java 表达式引擎,真不错!
AviatorScript 是一个高性能、轻量级的脚本语言,基于 JVM(包括 Android 平台)。它支持数字、字符串、正则表达式、布尔值等基本类型,以及所有 Java 运算符。主要特性包括函数式编程、大整数和高精度运算、完整的脚本语法、丰富的内置函数和自定义函数支持。适用于规则判断、公式计算、动态脚本控制等场景。
|
22天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
2月前
|
自然语言处理 安全 Java
Aviator Java 表达式引擎
AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。
48 10
|
28天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
2月前
|
移动开发 Java Windows
Java 匹配\r 和 \n 的正则表达式如何编写
【10月更文挑战第19天】Java 匹配\r 和 \n 的正则表达式如何编写
85 3
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
52 15
下一篇
无影云桌面