使用Java正则表达式匹配不可打印字符

通常有7个常见的不可打印字符,每个字符都有自己的十六进制表示形式。

名称人物十六进制表示
\一种0x07
逃逸\ e0x1B
换页\F0x0C
换行\ n0x0A
回车\ r0X0D
水平标签\ t0X09
垂直标签\ v0X0B

例子1

以下Java程序接受输入文本并计算其中的制表符空间数量-

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample1 {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regex = "\\t";
      //创建一个模式对象
      Pattern pattern = Pattern.compile(regex);
      //匹配字符串中的已编译模式
      Matcher matcher = pattern.matcher(input);
      int count =0;
      while (matcher.find()) {
         count++;
      }
      System.out.println("Number of tab spaces in the given iput text: "+count);
   }
}

输出结果

sample text with tab spaces
Number of tab spaces in the given input text: 3

例子2

您也可以使用不可打印字符的相应十六进制表示形式进行匹配。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample1 {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regex = "\\x09";
      //创建一个模式对象
      Pattern pattern = Pattern.compile(regex);
      //匹配字符串中的已编译模式
      Matcher matcher = pattern.matcher(input);
      int count =0;
      while (matcher.find()) {
         count++;
      }
      System.out.println("Number of tab spaces in the given iput text: "+count);
   }
}

输出结果

Enter input text:
sample data with tab spaces
Number of tab spaces in the given input text: 4