正则表达式 查找数字
数字相关的常用语法:
\d数字字符匹配。等效于 [0-9]。\D非数字字符匹配。等效于 [^0-9]。
[xyz]字符集。匹配包含的任一字符。例如,"[abc]“匹配"plain"中的"a”。
[^xyz]反向字符集。匹配未包含的任何字符。例如,"[^abc]“匹配"plain"中"p”,“l”,“i”,“n”。
find 和 matches 的区别
find 是部分匹配,适合判断是否含有某些内容,比如字符中是否含有数字
matches 是全匹配,适合判断是否为数字或是字母
1,判断字符中是否有数字
表达式可以是 \d 或是 [0-9] 可能有多个加*
public static void main(String[] args) {
String str2 = "1aa564sdfp5324";
System.out.println("======= "+str2+" =========");
hasDigit(str2);
str2 = "234564";
System.out.println("======= "+str2+" =========");
hasDigit(str2);
}
public static boolean hasDigit(String content) {
String regExp = "\\d*";
regExp = "[0-9]*";
Pattern pattern=Pattern.compile(regExp);
Matcher m = pattern.matcher(content);
System.out.println(" matches nums: " +m.matches());
System.out.println(" find nums: " +m.find());
return m.find();
}
结果:
======= 1aa564sdfp5324 =========
matches nums: false
find nums: true
======= 234564 =========
matches nums: true
find nums: true
2,提取字符串中的数字
表达式: [^0-9] 需要用到反向字符集,去掉非数字的。
public static void main(String[] args) {
String str = "curStaff[25].staffName12";
getContainsNum(str);
}
private static String getContainsNum(String str){
String regExp="[^0-9]"; // 反向字符集。匹配未包含的数字,替换着里面的数字
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(str);
System.out.println("find "+matcher.find());
String nums = matcher.replaceAll("").trim();
System.out.println("nums "+nums);
return nums;
}
结果:
find true
nums 2512
这个例子中会有个问题,数字是获取了,但是糅合在一起了,一般会需要分开。
3,分开提取的数字
替换的时候使用特殊字符进行替换,然后再进行分割,进行大小判断
public static void main(String[] args) {
String str = "curStaff[25].staff454Name12";
getSplitNums(str);
}
private static String getSplitNums(String str){
String regExp="[^0-9]"; // 反向字符集。匹配未包含的数字,替换着里面的数字
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(str);
List strList = new ArrayList<>();
// 用一个字符进行替换,逗号,空格或是特殊字符
String nums = matcher.replaceAll(",").trim();
//以逗号为分割符在讲数字存入一个字符串数组中
String[] strArr = nums.split(",");
System.out.println("nums "+nums);
for (String single: strArr) {
if(single.length() > 0){
strList.add(single);
}
}
System.out.println("result: "+strList.toString());
return nums;
}
总结:
使用正则表达式的时候,主要是对“正则表达式语法”要熟悉,使用的话,没有想法的话就网上查查,理解后,再实践操作一遍。
标签:java,String,nums,正则表达式,matcher,查找,println,find,数字
来源: https://blog.csdn.net/qq_35461948/article/details/113857267