Java正则表达式主要通过Matcher类进行匹配操作。例如,要从车牌号中提取最后一个数字,比如“苏A7865”提取5,或者“苏A876X”提取6。可以使用以下代码:import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String s = "A...
java正则表达式如何匹配某个字符串之前的字符串
Java正则表达式主要通过Matcher类进行匹配操作。例如,要从车牌号中提取最后一个数字,比如“苏A7865”提取5,或者“苏A876X”提取6。可以使用以下代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
// 正则表达式匹配最后一个数字,规则是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
Matcher类中的几个重要方法包括:
start()方法返回匹配到的子字符串在字符串中的起始索引位置。
end()方法返回匹配到的子字符串的最后一个字符在字符串中的索引位置。
group()方法返回匹配到的子字符串。
下面是一个具体的示例代码:
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("aaa2223bb");
m.find();
System.out.println(m.start());
System.out.println(m.end());
System.out.println(m.group());
这里,matches()方法用于匹配整个字符串;lookingAt()方法只能匹配字符串的开头部分;find()方法用于查找任何匹配项。
Matcher类中还有start(),end(),group()方法的重载形式,用于分组操作。例如:
Pattern p = Pattern.compile("([a-z]+)(\\d+)");
Matcher m = p.matcher("aaa2223bb");
m.find();
System.out.println(m.groupCount());
System.out.println(m.start(1));
System.out.println(m.start(2));
System.out.println(m.end(1));
System.out.println(m.end(2));
System.out.println(m.group(1));
System.out.println(m.group(2));
只有在匹配操作成功后,才能使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException异常。2024-12-06