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. C# 调用 C#DLL

    加载dll-添加引用 添加引用的意思是让程序生成时根据配置的路径去加载相应的dll.其引用的步骤如下图所示: 解决方案->引用-> 添加引用-> 浏览-> 选择dll所在的路径 ...

  2. 0929CSP-S模拟测试赛后总结

    70分31名滚粗. 赛后发现赛时得到的分数全都是暴力分…… T2打的三分跑都没跑……边界设错了……赛后稍微调了调多了15分…… 据说有15分的暴力分,那么另外15分就是只有一种选择的情况了…… (如果 ...

  3. Form-Item Slot 自定义label内容

    <el-form-item> <span slot="label">体   重:</span> <el-input v-model=&qu ...

  4. 海量数据解决思路之Hash算法

    海量数据解决思路之Hash算法   一.概述 本文将粗略讲述一下Hash算法的概念特性,里边会结合 分布式系统负载均衡 实例对Hash的一致性做深入探讨.另外,探讨一下Hash算法在海量数据处理方案中 ...

  5. LightOJ-1259-Goldbach`s Conjecture-素数打表+判断素数对数

    Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathemat ...

  6. PAT甲级——A1120 Friend Numbers【20】

    Two integers are called "friend numbers" if they share the same sum of their digits, and t ...

  7. 图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

    Join 连接在日常开发用得比较多,但大家都搞清楚了它们的使用区别吗??一文带你上车~~ 内连接 inner join 内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表,在表中存在 ...

  8. Vue的组件及传参

    目录 Vue的组件及传参 Vue组件的概念 根组件 子组件(局部组件) 父组件向子组件传值 子组件向父组件传值 Vue的组件及传参 Vue组件的概念 我们首先要知道组件的概念,实际上每一个组件都是一个 ...

  9. js 实现纵向轮播

    效果 html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  10. 【颓废篇】easyx--2048

    整天待在机房是不是,一直保持学术的态度就比较的难啊~ 所以本蒟蒻就在学术之余学了些奇技淫巧,然后就写了一些奇奇怪怪的程序啊,比如让我们小组dalao们都颓得不亦乐乎的2048~~ 当然,2048的实现 ...