首页 > 编程知识 正文

java正则表达式匹配空格,java正则表达式匹配特殊符号

时间:2023-05-03 20:57:16 阅读:251024 作者:3143

一个字符串就是一个正则表达。

如字符串"D"在Java中表示非数字([^0-9]),而Java代码里字符串中的''符号需要转义,所以要表示这个正则表达式需要用"\D"。

Java中和正则表达式相关的主要有两个类:

import java.util.regex.Pattern;import java.util.regex.Matcher;

Pattern类表示的是某种匹配模式。一个Pattern对象和一个正则表达式相关联,而不表示具体的匹配。

Pattern pattern = Pattern.compile("[a-z]\d{3}.*");

Matcher类表示的是具体的匹配。一个Matcher对象和一个具体的字符串相关联,表示在指定模式下的这个字符串的匹配。

Matcher matcher = pattern.matcher("hello123world");

具体的匹配信息都在Matcher对象中,所以多个Matcher对象可以共享一个Pattern对象。

查看给定的字符串是否完全匹配指定模式:

System.out.println(matcher.matches()); // true// 下面的代码完全等价,这是一个简便方法System.out.println(Pattern.matches("[a-z]+\d{3}.*", "hello123world")); // true

看代码示例:

import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String str = "汽车鲁A12345、京A98765、辽B55555超速"; String pattern = "(\D{2})(\d+)"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(str); // 给出的整个字符串str是否符合正则表达式pattern System.out.println(m.matches()); // false System.out.println("==========匹配查找"); while (m.find()) { // 从str开头查找符合正则表达式的子串,每次查找会从上一次找到的位置后继续往后查找 String print = String.format("分组2出现的位置索引: %d, 分组2内容<%s>", m.start(2), m.group(2)); System.out.println(print); } System.out.println("==========重置匹配器,重置查找位置"); m.reset(); // 重置匹配器,下一次不指定索引的查找从str头开始。此句可以省略,看下面注释 int index = 10; while (m.find(index)) { // 从指定索引开始查找。由于指定了索引,之前的m.reset()对执行结果没影响,可以省略 String print = String.format("此次匹配,分组数: %d,匹配的子串为<%s>,分组1内容<%s>,分组2内容<%s>", m.groupCount(), m.group(0), m.group(1), m.group(2)); System.out.println(print); index = m.end(); } System.out.println("==========重置匹配器,重置输入序列"); m.reset("鲁B99999"); // 重置匹配器的输入序列 while (m.find()) { String print = String.format("分组2出现的位置索引: %d, 分组2内容<%s>", m.start(2), m.group(2)); System.out.println(print); } }}

程序输出:

false==========匹配查找分组2出现的位置索引: 4, 分组2内容<12345>分组2出现的位置索引: 12, 分组2内容<98765>分组2出现的位置索引: 20, 分组2内容<55555>==========重置匹配器,重置查找位置此次匹配,分组数: 2,匹配的子串为<京A98765>,分组1内容<京A>,分组2内容<98765>此次匹配,分组数: 2,匹配的子串为<辽B55555>,分组1内容<辽B>,分组2内容<55555>==========重置匹配器,重置输入序列分组2出现的位置索引: 2, 分组2内容<99999>
Java程序员掌握这些至少涨薪5Kwin7电脑文件夹如何加密

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。