1.使用正则表达式分割字符串:

        String[] string.split(String regex);
"a b c".split("\\s");->[a, b, c]
"a b c".split("\\s");->[a, b, , , , c]
"a b c".split("\\s+");->[a, b, c]
"a,b:;c".split("[\\,\\:\\;\\s]+");->[a, b, c]
    public static void main(String[] args){
String tags = "java php python";
String[] arr = tags.split("\\s");
System.out.println(Arrays.toString(arr));
}


```#java
public class SplitString {
public static void main(String[] args){
String tags = "java php python";
String[] arr = tags.split("\\s+");
System.out.println(Arrays.toString(arr));
}
}
```

```#java
public class SplitString {
public static void main(String[] args){
String tags = "java, php;: python";
String[] arr = tags.split("[\\,\\;\\:\\s]+");
System.out.println(Arrays.toString(arr));
}
}
```

2.使用正则表达式查找字符串

package com.testList;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class SearchString {
public static void main(String[] args){
String s = "The quick brown fox jumps over the lazy dog.";
//区分大小写
Pattern p1 = Pattern.compile("the");
Matcher m1 = p1.matcher(s);
while(m1.find()){
String sub = s.substring(m1.start(),m1.end());
System.out.print(sub+",start="+m1.start()+" end="+m1.end()+"\t");
}
System.out.println();
//不区分大小写
Pattern p2 = Pattern.compile("the",Pattern.CASE_INSENSITIVE);
Matcher m2 = p2.matcher(s);
while(m2.find()){
String sub = s.substring(m2.start(),m2.end());
System.out.print(sub+",start="+m2.start()+" end="+m2.end()+"\t");
}
System.out.println();
//匹配每个单词
Pattern p3 = Pattern.compile("\\w+",Pattern.CASE_INSENSITIVE);
Matcher m3 = p3.matcher(s);
while(m3.find()){
String sub = s.substring(m3.start(),m3.end());
System.out.print(sub+",start="+m3.start()+" end="+m3.end()+"\t");
}
System.out.println();
//匹配带有o的单词
Pattern p4 = Pattern.compile("\\w*o\\w*",Pattern.CASE_INSENSITIVE);
Matcher m4 = p4.matcher(s);
while(m4.find()){
String sub = s.substring(m4.start(),m4.end());
System.out.print(sub+",start="+m4.start()+" end="+m4.end()+"\t");
}
}
}

3.使用正则表达式替换字符串

public class SplitString {
public static void main(String[] args){
String s = "The quick brown fox jumps over the lazy dog.";
//区分大小写
String r = s.replaceAll("\\s+"," ");//参数依次为正则表达式,用于替换的字符
System.out.println(r);
String r2 = s.replaceAll("(\\w+)","<b>$1</b>");//$1方向引用,指向前面捕获的单词
System.out.println(r2);
}
}

4.总结

使用正则表达式可以:

  • 分割字符串:String .split()
  • 搜索字串:Matcher.find()
  • 替换字符串:String.replaceAll()

廖雪峰Java9正则表达式-2正则表达式进阶-6搜索和替换的更多相关文章

  1. 廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配

    1.使用括号可以提取字符串 不加括号匹配电话号码 匹配成功后,如何提取想要的字符串? 使用(...)可以分组:"^(\d{3,4})\-(\d{6,8})$" 2.String.m ...

  2. 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配

    1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...

  3. 廖雪峰Java9正则表达式-1正则表达式入门-2正则表达式匹配规则

    正则表达式的匹配规则: 从左到右按规则匹配 匹配规则及示例 可以匹配 不能匹配 "abc" "abc" 不能匹配:"ab", "A ...

  4. 廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介

    1.使用代码来判断字符串 场景: 判断字符串是否是有效的电话号码:"010-12345678", "123ABC456" 判断字符串是否是有效的电子邮箱地址:& ...

  5. 廖雪峰Python电子书总结

    函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...

  6. 廖雪峰python教程的第一个疑问

    函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...

  7. 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  8. Python自学笔记-生成器(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...

  9. Python自学笔记-lambda函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...

随机推荐

  1. docker 可持续集成及日志管理及监控报警

  2. Python第二课-输入输出

    name = input() 输入的字符串已经赋值给变量name print() 输出内容 print(,) print中,连接字符串相当于空格

  3. angular 级联选择

    HTML: <link rel="stylesheet" href="views/tree/checkbox.css"/> <div clas ...

  4. 《我是一只IT小小鸟》读书笔记 PB16110698 第四周(~3.29)

    <我是一只IT小小鸟>读书笔记 本周在邓老师的推荐下,我阅读了<我是一只IT小小鸟>,这本书由21位初入职场的IT人的传记组成,记录了他们成长道路上的酸甜苦辣.书中一段段鲜活生 ...

  5. UMP系统功能 数据安全

  6. Linux安装Java与Eclipse

    Linux安装Java和Eclipse 一.准备工作 1.下载jdk  https://www.oracle.com/technetwork/java/javase/downloads/jdk8-do ...

  7. Android开发 TextView的开发记录

    前言 此篇博客是记录一些TextView开发上一些少用的开发功能项.目前开发记录如下: 添加图片 文字滚动 添加省略号 实现长文的收起和展开功能 改变一个字符串里自定字符的颜色或者大小 效果字体(粗体 ...

  8. JUC 一 CopyOnWriteArrayList 和 CopyOnWriteArraySet

    java.util.concurrent; 简介 CopyOnWriteArrayList是一个线程安全的ArrayList,通过内部的volatile数组和显式锁ReentrantLock来实现线程 ...

  9. 有关阿里云对SaaS行业的思考,看这一篇就够了

    过去二十年,随着改革开放的深化,以及中国的人口红利等因素,中国诞生了大批To C的高市值互联网巨头,2C的领域高速发展,而2B领域一直不温不火.近两年来,在C端流量饱和,B端数字化转型来临的背景下,中 ...

  10. thinkphp 命名范围

    在应用开发过程中,使用最多的操作还是数据查询操作,凭借ThinkPHP的连贯操作的特性,可以使得查询操作变得更优雅和清晰,命名范围功能则是给模型操作定义了一系列的封装,让你更方便的操作数据. 命名范围 ...