Products
GG网络技术分享 2025-03-18 16:15 1
从屏幕获取用户输入的字符串(如:“数学87分,物理76分,英语96分”),解析出中的成绩,计算总成绩和平均成绩,将结果输出在屏幕上。
package cn.test;import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test{
public static void main(String[] args) {
String str = "数学87分,物理76分,英语96分";
String regEx = "[0-9]+";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
int sum = 0;
while(m.find()) {
String s = m.group();
System.out.println(s);
sum += Integer.valueOf(s);
}
System.out.println("sum = "+sum);
}
}
package test;import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String str = scanner.next();
String regEx = "[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
System.out.println("你的成绩是:" + m.replaceAll("").trim());
}
}
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。
.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。
下表列出了一些正则表达式的实例及描述:
正则表达式 | 描述 |
---|
Java 正则表达式和 Perl 的是最为相似的。
java.util.regex 包主要包括以下三个类:
以下实例中使用了正则表达式 .*runoob.* 用于查找字符串中是否包了 runoob 子串:
实例
import java.util.regex.*; class RegexExample1{ public static void main(String[] args){ String content = "I am noob " + "from runoob.com."; String pattern = ".*runoob.*"; boolean isMatch = Pattern.matches(pattern, content); System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch); } }
实例输出结果为:
字符串中是否包含了 'runoob' 子字符串? true
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式 (dog) 创建了单一分组,组里包含"d","o",和"g"。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。
下面的例子说明如何从一个给定的字符串中找到数字串:
RegexMatches.java 文件代码:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String[] args ){ // 按指定模式在字符串查找 String line = "This order was placed for QT3000! OK?"; String pattern = "(\\\\D*)(\\\\d+)(.*)"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); System.out.println("Found value: " + m.group(3) ); } else { System.out.println("NO MATCH"); } } }
以上实例编译运行结果如下:
Demand feedback