ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式

2022-01-02 15:33:21  阅读:182  来源: 互联网

标签:regex String 正则表达式 System str println


java正则表达式

正则表达式,又称规则表达式,计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式语法

基本介绍

如果要想灵活的运用正则表达式,必须了解其中各种元字符的功能,元字符从功能上大致分为:

  1. 限定符
  2. 选择匹配符
  3. 分组组合和反向引用符
  4. 特殊字符
  5. 字符匹配符
  6. 定位符

 

元字符( Metacharacter)-转义号 \\

\\ 符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。案例:用去匹配“abc$("会怎样?

再次提示

在Java的正则表达式中,两个\\代表其他语言中的一个\

需要用到转义符号的字符有以下: . * + () $ / \ ? [ ] ^ { }

 

· 元字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java正则表达式是怎么用的?

(这里太过高深不做详解)

 

 

 

 

正则表达式为一个字符串,其中[]内的部分代表其中的任意字符。例如[abc]代表a或b或c。我们还可以用[a-z]这种形式代表某一字符区间。
有了正则表达式,我们能很简洁的去匹配、替换、切割字符串。

(1)查找

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Main {

public static void main(String[] args) {

//要匹配的字符

String str = "131bcd6fgij";

//正则表达式

//这里代表第一个字符为1,第二个字符为2,3,7,8,后面9个为小写字母或数字,且不为5或者h

String regex = "1[2378][1-46-9a-gi-z]{9}";

//直接写

boolean flag1 = str.matches("1[2378][1-46-9a-gi-z]{9}");

System.out.println(flag1);

//或者

boolean flag2 = Pattern.matches(regex, str);

System.out.println(flag2);

//再或者将给定的正则表达式编译为模式。

Pattern p = Pattern.compile(regex);

//创建一个匹配器,匹配给定的输入与此模式。

Matcher m = p.matcher(str);

//尝试将整个区域与模式进行匹配。

boolean flag3 = m.matches();

//输出匹配结果,此次结果为true

System.out.println(flag3);

}

}

(2)替换

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Main {

public static void main(String[] args) {

//要匹配的字符

String str = "12a6B985Ccv65";

//正则表达式

String regex = "[a-zA-Z]+";

//正则表达式

String regex2 = "\\d+";

//将字符串中英文字母替换为&符号,输出12&6&985&&&65

 

System.out.println(str.replaceAll("[a-zA-Z]", "&"));

//将字符串中连续英文字母替换为&符号,输出12&6&985&65

System.out.println(str.replaceAll(regex, "&"));

 

//将字符串中单个数字替换为0,输出00a0B000Ccv00

System.out.println(str.replaceAll("\\d","0"));

//将字符串中单个数字或者连续的数字替换为0,输出0a0B0Ccv0

System.out.println(str.replaceAll(regex2,"0"));

 

}

}

(3)切割

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Main {

public static void main(String[] args) {

// 要切割的字符

String str = "2a6B5C65q9";

// 根据单个数字或者连续数字切割字符串

String []arr = str.split("\\d+");

System.out.println(arr.length);

for (String s : arr) {

System.out.println(s);

}

// 根据单个数字来切割字符串

arr = str.split("\\d");

System.out.println(arr.length);

for(String s : arr) {

System.out.println(s);

}

}

}

开头存在数字,导致最终分割结果在开头会多空的字符串。

 

 

标签:regex,String,正则表达式,System,str,println
来源: https://www.cnblogs.com/xyczxf/p/15757552.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有