JAVA正则表达式及字符串的替换与分解相关知识总结

JAVA正则表达式及字符串的替换与分解

Java 提供了 java.util.regex 包来与正则表达式进行模式匹配
java.util.regex 包主要包括以下三个类:

Pattern 类:

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher 类:

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

常用用法

  • . :表示任何一个字符
  • \d :\\d 表示0~9任何一个字符 \D:非0~9任何一个字符
  • \s :\\s 表示空格类字符
  • \w:\\w 表示可用于标识符的字符(不包含美元符号)
  • \p{lower}:\\p {lower}表示小写字母a—z
  • \p{upper}:\\p{upper}表示大写字母
  • \p{ascll}:\\p{ascll}表示ascll字符
  • \p{punct}:\\p{punct}表示标点符号
  • [abc]:表示a b c 中的任何一个
  • [^abc]:表示除去 a b c 以外的任何字符
  • [a-zA-Z]:表示英文字母中的其中一个表示元字符或者普通字符,表示出现0次或者1次
  • X?:表示X出现0次或者1次
  • X*: 表示X出现0次或者无数次
  • X+ :表示 X出现1次或者多次
  • X{n}:表示X恰好出现n次
  • X{n,}:表示X至少出现n次
  • X{n,m}:表示X出现n次至m次

字符串的替换

replaceAll方法返回一个字符串,但是不改变当前字符串

String result= "12hello567".replaceAll("\\d+"," 你好 ");
你好hello 你好
public class ReplaceErrorWord {
public static void main(String args[ ]) {
String str = "登录网站: 222.128.89.253";
Pattern pattern;
Matcher matcher;
String regex = "[\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}";
pattern = Pattern.compile(regex);//使用 regex 初试化模式对象 pattern
matcher = pattern.matcher(str);//得到检索 str 的匹配对象 matcher
String IP="";
while(matcher.find()) {
IP= matcher.group();
System.out.print(matcher.start()+"位置出现:");
System.out.println(IP);
}
System.out.printf("将%s 替换为 202.192.78.56\n",IP);
String result = matcher.replaceAll("202.192.78.56");
System.out.println(result);
}
}

字符串的分解

split()

import java.util.Scanner;
public class Xi{
    public static void main(String[] args){
        System.out.println("请输入一行文本:");
        Scanner reader=new Scanner(System.in);
        String str=reader.nextLine();
        String regex = "[\\s\\d\\p{Punct}]";
        String words[]=str.split(regex);
        for(int i = 0;i < words.length;i++){
            int m=i+1;
            System.out.println("单词"+m+";"+words[i]);
        }
    }
}

到此这篇关于JAVA正则表达式及字符串的替换与分解相关知识总结的文章就介绍到这了,更多相关JAVA正则表达式及字符串的替换与分解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java使用正则表达式检索、替换String中特定字符和正则表达式的一切

    引言 String这个对于程序原来说一定是最熟悉不过的,很多时候我们都习惯去使用String的原生方法去完成查找字符串.替换.删除,而正则表达式由于略显苦涩的语法常常被人忽略,其实很多时候使用正则表达式可以提高不少性能和节省资源. 一.正则表达式简述 正则表达式正则表达是Java中比较矛盾的知识点,因为使用起来可以很简单也可以相当地有难度,但是对于字符串操作来说应用得当则事半功倍,字符串查找,搜索,匹配,替换等等,正则表达式无所不能.而所谓正则表达式本质就是一个字符串(这个字符串按照一定的语法和

  • java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼看过去就非常别扭, 感觉不灵活, 万一需要过滤其他的又得临时加进去 解决方案 如下所示 public static String stringFilter (String str){ String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',

  • Java正则表达式实现经纬度的合法性操作

    Java正则表达式 经纬度合法性 经度: -180.0-+180.0(整数部分为0-180,必须输入1到5位小数) 正则表达式: /^[\-\+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/ 纬度: -90.0-+90.0(整数部分为0-90,必须输入1到5位小数) 正则表达式: /^[\-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/ 遇到了一个这样的需求,前端传来list集合,后台校验每个对

  • java正则表达式之Pattern与Matcher类详解

    Pattern.split方法详解 /** * 测试Pattern.split方法 */ @Test public void testPatternSplit() { String str = "{0x40, 0x11, 0x00, 0x00}"; // 分割符为:逗号, {,}, 空白符 String regex = "[,\\{\\}\\s]"; Pattern pattern = Pattern.compile(regex); /* * 1. split 方法

  • Java正则表达式的实例操作指南

    前言 Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 /* * File:RegExp.java * User:iChochy * URL:https://ichochy.com * Copyright (c) 2020 * Date:2020/09/07 18:11:07 */ package com.ichochy.example; impo

  • 正则表达式匹配${key}并在Java中使用的详细方法

    1.正则表达式匹配${key} \$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写英文字母) .*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${key}形式的文本 解释如下: . 匹配除换行符\n之外的任何单字符 * 匹配前面的子表达式零次或多次 要匹配*字符,请使用\* { 标记限定符表达式的开始.要匹配 {,请使用 \{ [a-z] 匹配小写字母 +匹配前面的子表达式一次或多次.要匹配+字符,请使用\+;+限定是贪婪的,因为它们会尽可能多

  • Java 如何使用正则表达式去除前导0

    我就废话不多说了,大家还是看代码吧 String s="0000000002121210" s=s.replaceAll("^(0+)", ""); System.out.println(s); 补充:Java中数字处理去掉末尾的0 实例如下所示: public static String insertComma(String s, int len) { if (s == null || s.length() < 1) { return &

  • JAVA正则表达式及字符串的替换与分解相关知识总结

    JAVA正则表达式及字符串的替换与分解 Java 提供了 java.util.regex 包来与正则表达式进行模式匹配 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示.Pattern 类没有公共构造方法.要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象.该方法接受一个正则表达式作为它的第一个参数. Matcher 类: Matcher 对象是对输入字符串进行解释和匹配

  • Java中字符序列的替换与分解的几种实现方法

    目录 一.使用String类 二.使用StringTokenizer类 三.使用Scanner类 四.使用Pattern类与Matcher类 一.使用String类 String对象调用public String replaceAll(String regex,String replacement)方法,返回一个新的String对象,返回的String对象的字符序列是把当前String对象的字符序列中,所有和参数regex相匹配的子字符序列替换成参数replacement指定的字符序列所得到的字

  • 学习Java正则表达式(匹配、替换、查找)

    本文为大家分享了Java正则表达式的匹配.替换.查找和切割操作,有兴趣的朋友可以参考一下 import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { getStrings(); //用正则表达式获取指定字符串内容中的指定内容 System.out.pri

  • Java非阻塞I/O模型之NIO相关知识总结

    组件说明 (1)Channel:NIO模型中的管道,管道是链接建立和通信的重要组件,我们可以理解管道是一个容器环境,我们所有的I/O的建立读取都可以在这个容器中进行 (2)Selector:NIO中的选择器,NIO是由事件驱动的,当有链接事件或者读取事件发生时,这个事件可以注册到这个选择器上,并且最终被我们检测到. (3)SelectionKey:我们可以在Selector中进行检测是否有SelectionKey产生,并且根据这个SelectionKey中的信息判断时什么事件发生了. 代码说明

  • Java正则表达式之分组和替换方式

    目录 1 正则表达式热身 匹配电话号码 匹配邮箱 特殊字符替换 2 分组 3 分组替换 4 反向引用 5 反向引用替换 正则表达式的子表达式(分组)不是很好懂,但却是很强大的文本处理工具. 1 正则表达式热身 匹配电话号码 // 电话号码匹配 // 手机号段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304072984".matches("1[3578]\\d{9}")); // true // 座机号:010

  • Java正则表达式判断字符串中是否包含中文示例

    前言 在日常开发编程中,我们有时从用户那里得到一些输入信息,对于特定应用,部分信息不允许包含中文字符,那如何检测信息字符串中是否包含中文字符呢? 方法有很多,这篇文章就介绍一下如何通过正则表达式来实现这个需求. 示例代码 package cn.sunzn.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[]

  • asp常用的正则表达式实现字符串的替换

    去除html标签正则<\/*[^<>]*>Function LoseHtml(ContentStr)     Dim ClsTempLoseStr,RegEx         ClsTempLoseStr = Cstr(ContentStr)     Set RegEx = New RegExp         RegEx.Pattern = "<\/*[^<>]*>"         RegEx.IgnoreCase = True   

  • Java使用正则表达式判断字符串是否以字符开始

    Java 正则表达式判断字符串是否以字符开始: public static boolean startWithChar(String s) { if (s != null && s.length() > 0) { String start = s.trim().substring(0, 1); Pattern pattern = Pattern.compile("^[A-Za-z]+$"); return pattern.matcher(start).matche

  • Java正则表达式的替换和分组功能

    前言 这篇来学习正则表达式的替换和分组功能,替换很好理解,分组有点复杂,特别是如何写有效的分组的正则表达式.这篇通过几个练习,简单了解下替换和分组功能. 1.替换功能 在String类有一个替换功能的方法,结合正则表达式去实现替换,下面是replaceAll()方法的举例. package regex; public class Demo1_Regex { public static void main(String[] args) { String str = "wo1shi2zhong3gu

  • Java正则表达式学习之分组与替换

    正则表达式的子表达式(分组)不是很好懂,但却是很强大的文本处理工具. 1 正则表达式热身 匹配电话号码 // 电话号码匹配 // 手机号段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304072984".matches("1[3578]\\d{9}")); // true // 座机号:010-65784236,0316-3312617,022-12465647,03123312336 String regex

随机推荐