package com.boco;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestReg {

  /**
  * 验证传入的字符串是否整个匹配正则表达式
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 若匹配,则返回true;否则,返回false
  */
  public static boolean validate(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否完全匹配
    boolean flag = m.matches();//该方法尝试将整个输入序列与该模式匹配
    return flag;
  }

  /**
  * 验证传入的字符串是否有子字符串匹配正则表达式
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 若匹配,则返回true;否则,返回false
  */
  public static boolean validate2(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否完全匹配
    boolean flag = m.find();//该方法扫描输入序列以查找与该模式匹配的下一个子序列
    return flag;
  }

  /**
  * 给定的字符串中是否有符合给定正则表达式的子字符串,返回匹配的第一个子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 返回匹配的第一个子字符串,否不匹配.返回null
  */
  public static String search(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否找到匹配
    boolean flag = m.find();//该方法扫描输入序列以查找与该模式匹配的下一个子序列
    String findString = "";
    if(flag){
      findString =m.group();
      String findString0 = m.group(0);//group(),group(0)返回符合整个表达式的子字符串
      String findString1 = m.group(1);//group(1)返回符合整个表达式的子字符串中匹配第一个表达式的子字符串
      System.out.println(findString1);

    }
    return findString;
  }

  /**
  * 返回给定字符串中匹配给定正则表达式的所有子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 返回所有匹配给定正则表达式的所有子字符串
  */
  public static List searchSubStr(String regex,String decStr){
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(decStr);
    List<String> list = new ArrayList<String>();
    while(m.find()){
      list.add(m.group());
    }
    for(String str:list){
      System.out.println(str);
    }
    return list;
  }

  /**
  * 替换给定字符串中匹配正则表达式的子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @param replaceStr 将符合正则表达式的子字符串替换为该字符串
  * @return 返回替换以后新的字符串
  */
  public static String replace(String regex,String decStr,String replaceStr){
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(decStr);
    //替换
    String newString = m.replaceAll(replaceStr);
    System.out.println(newString);
    return newString;
  }

  public static void testSplit(){
    String str ="abc5Adefghi7Ajklmn";
    //分割
    String[] strs = str.split("(\\d)A");
    for(int i=0;i<strs.length;i++){
      System.out.println(strs[i]);
    }
  }
  public static void main(String[] args) {
    //replace("\\d", "dsfd;sa;ksd12a34b567c890d88e999f", "*");
    //System.out.println(validate("\\d+","3344455aa"));
    //System.out.println(validate2("\\d+","3344455aa"));
    //System.out.println(searchSubStr("(\\d+)([a-z]+)", "334455aa-2211aa--2255bb"));
    testSplit();
  }
}

正则表达式在java程序中的使用的更多相关文章

  1. Linux上从Java程序中调用C函数

    原则上来说,"100%纯Java"的解决方法是最好的,但有些情况下必须使用本地方法.特别是在以下三种情况: 需要访问Java平台无法访问的系统特性和设备: 通过基准测试,发现Jav ...

  2. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

  3. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  4. Java程序中调用Python脚本的方法

    在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...

  5. 在java程序中访问windows有用户名和密码保护的共享目录

    在java程序中访问windows有用户名和密码保护的共享目录 Posted on 2015-11-20 14:03 云自无心水自闲 阅读(3744) 评论(0)  编辑  收藏 --> Jav ...

  6. java程序中默认浮点形值常量是什么类型的?如何区分不同类型的浮点型整数值常量?

    java程序中默认浮点形值常量是什么类型的 默认的所有的浮点型数值都是double型

  7. java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?

    java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型

  8. java程序中获取kerberos登陆hadoop

    本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...

  9. Derby安装,创建数据库,在Java程序中使用Derby

    1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹, ...

随机推荐

  1. h5移动端flexible源码适配终端解读以及常用sass函数

    ;(function(win, lib) { var doc = win.document;// win = window,lib = window.lib; var docEl = doc.docu ...

  2. 使用npm link 创建本地模块

    1. npm link 介绍 创建一个全局的符号链接,优点是方便我们进行本地node模块的开发调用,和后期发布私服,或者npm 仓库调用是一致的 以下为官方的说明: First, npm link i ...

  3. 网站SEO知识

    http://seo.chinaz.com/ 这是综合查询的 site:www.hr246.com 可以查看百度收录的情况 参照贪玩游戏来搞 http://www.tanwan.com http:// ...

  4. JavaScript中的函数(一)

    javaScript中的函数实际上是对象,每一个函数都是Function类型的实例,和其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也就是一个指向函数对象的指针,也就是函数对象的一个 ...

  5. Virsh中创建虚拟机两种方式define和create的区别

    本质上两者一样的,都是从xml配置文件创建虚拟机 define  丛xml配置文件创建主机但是不启动 create  同样是丛xml配置文件创建主机,但是可以指定很多选项,比如是否启动,是否连接控制台 ...

  6. table样式的下拉框(angularjs)

    前言 虽然使用的技术比较老了,但是思想却还是适用于现在的vue等框架. 一:实现的样式 二:实现包括的功能点 1:下拉框内容是表格,类似于一个弹窗 表格内容最多六行,超出的显示滚动条,表头固定,可滚动 ...

  7. qt ui程序使用Linux的文件操作open、close (转)

    原文地址:qt ui程序使用Linux的文件操作open.close 作者:kjpioo 提出这个问题是因为在qt的QWidget类型的对象中,close()函数会和QWidget::close()冲 ...

  8. outlook2013插件 VSTO开发与部署

    一.背景 最近因为项目需要对outlook开发一个插件,功能是将outlook的邮件作导出功能,需要使用VSTO开发一个插件将邮件进行导出的操作.于是,开始学习VSTO outlook的开发了,折腾了 ...

  9. 【转载】最短路径—Dijkstra算法和Floyd算法

    注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始 ...

  10. python3api-ms-win-crt-runtime-l1-1-0.dll丢失解决方法

    先记录一个之前遇到的问题: 在安装了pycharm后,发现 通过上网发现,其实就是没有安装pip和setuptools,其实 Python3以后都是默认安装pip的,所以最后的解决办法是将我目前的Py ...