假如有如下字符串String s = "100福克斯200-300了圣诞节";
怎么用正则表达式方式,把字符串s中的100,200,300放到数组当中.
很简单 你是想匹配数字吗?写这个“\d{3}”意思匹配所有的三位数。如果还需要其它操作建议下载RegexBuddy.可以很直观查看匹配的正则表达式
Java正则表达式主要有两个类:Pattern和Matcher。
Pattern表示正则表达式的编译形式。
Matcher表示执行匹配操作的引擎。
下面通过几个例子展示两个类的使用方法。
matches方法:
[java] view plain copy print?
package com.zzj.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchesTest {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\w+");
Matcher matcher = pattern.matcher("abc123");
System.out.println(matcher.matches()); // 尝试将整个字符序列与该模式匹配
matcher = pattern.matcher("abc&&123");
System.out.println(matcher.matches());
}
}
测试结果:
[plain] view plain copy print?
true
false
find方法:
[java] view plain copy print?
package com.zzj.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FindTest {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\w+");
Matcher matcher = pattern.matcher("abc&&123");
System.out.println(matcher.find()); // 查找匹配该模式的下一个子序列
System.out.println(matcher.find());
System.out.println(matcher.find());
System.out.println(matcher.find());
}
}
测试结果:
[plain] view plain copy print?
true
true
false
false
group方法1:
[java] view plain copy print?
package com.zzj.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*/
public class GroupTest1 {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\w+");
Matcher matcher = pattern.matcher("abc&&123");
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
测试结果:
[plain] view plain copy print?
abc
123
group方法2:
[java] view plain copy print?
package com.zzj.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*/
public class GroupTest2 {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("([a-z]+)([0-9]+)");
Matcher matcher = pattern.matcher("abc123&&def456");
while(matcher.find()){
System.out.println(matcher.group(0)); // 等价于matcher.group()
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}
}
测试结果:
[plain] view plain copy print?
abc123
abc
123
def456
def
456
public static String filterUnNumber(String str) {
String regEx = "[^0-9]"; //匹配数字
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
//替换与模式匹配的所有字符(即非数字的字符将被","替换)
return m.replaceAll(",").trim();
}
处理后用“,”分割结果字符串,去除空串,就是你想要的
(⊙o⊙)…这样的话!
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\d+");
String str = "2134正则表达式sdhgsfgfhbzf1235A2515$84 ";
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
有点问题 复制的时候少了一个“\”这里Pattern pattern = Pattern.compile("\d+");
改为Pattern pattern = Pattern.compile("\d+");
我擦这个怎么会自动删掉我的“\”。你自己加吧,那里是双杠