java正则表达式

1概念

正则表达式(Regular Expression)又称正规表示法、常规表示法,在代码中常简写为 regex、regexp 或 RE,它是计算机科学的一个概念。
正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作,是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符 a~z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。
String 类里也提供了如下几个特殊的方法。

  • boolean matches(String regex):判断该字符串是否匹配指定的正则表达式。
  • String replaceAll(String regex, String replacement):将该字符串中所有匹配 regex 的子串替换成 replacement。
  • String replaceFirst(String regex, String replacement):将该字符串中第一个匹配 regex 的子串替换成 replacement。
  • String[] split(String regex):以 regex 作为分隔符,把该字符串分割成多个子串。

上面这些特殊的方法都依赖于 Java 提供的正则表达式支持,除此之外,Java 还提供了 Pattern 和 Matcher 两个类专门用于提供正则表达式支持。

2正则表达式语法

1)  英文句点.符号:匹配单个任意字符。

  • 表达式t.o 可以匹配:tnot#oteo等等。不可以匹配:tnnotoTnot正o等。

2)中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。

  • 表达式:t[abcd]n 只可以匹配:tantbntcntdn。不可以匹配:thntabntn等。

 3)| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。

  • 表达式:t(a|b|c|dd)n 只可以匹配:tantbntcntddn。不可以匹配taantntabcn等。

 4)表示匹配次数的符号

符号次数
*0次或多次
+1次或多次
0次或1次
{n}恰好n次
{n,m}从n次到m次
  • 表达式:[0—9]{ 3 } \— [0-9]{ 2 } \— [0-9]{ 3 } 的匹配格式为:999—99—999
    因为符号在正则表达式中有特殊的含义,它表示一个范围,所以在前面加转义字符\

 5)^符号:表示否,如果用在方括号内,^表示不想匹配的字符。

  • 表达式:[^x] 第一个字符不能是x

 6)\S符号:非空字符
7)\s符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。
8)\r符号:空格符,与\n\tab相同

 

 

 3Java 中正则表达式的应用

 1)判断功能

  • public boolean matches(String regex)
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class RegexMatches
    {
        private static final String REGEX = "foo";
        private static final String INPUT = "fooo";
        private static Pattern pattern;
        private static Matcher matcher;
     
        public static void main( String[] args ){
           pattern = Pattern.compile(REGEX);
           matcher = pattern.matcher(INPUT);
           System.out.println("matches(): "+matcher.matches());
       }
    }

 2)分割功能

  • import java.util.Scanner;
    
    public class fenge {
        public static void main(String[] args){
            String age = "18-24";//定义年龄范围
            String regex = "-";
            String[] strArr = age.split(regex);//分割成字符串数组
    
            int startAge = Integer.parseInt(strArr[0]);
            int endAge = Integer.parseInt(strArr[1]);
    
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您的年龄:");
            int a = sc.nextInt();
            if (a >= startAge && a <= endAge){
                System.out.println("你就是我想找的");
        
        }
    }
    
    public String[] split(String regex)

3)替换功能

  • public String replaceAll(String regex,String replacement)
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {

   private static String REGEX = "dog";
   private static String INPUT = "The dog says meow. " + "All dogs say meow.";
   private static String REPLACE = "cat";

   public static void main(String[] args) {
      Pattern p = Pattern.compile(REGEX);
      Matcher m = p.matcher(INPUT); 
      INPUT = m.replaceAll(REPLACE);
      System.out.println(INPUT);
   }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值