java正则表达式的简单用法介绍
本文纯属自身学习记录,不喜勿喷
正则表达式是什么?
参考回答:
在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。计算机处理的信息更多的时候不是数值而是字符串,正则表达式就是在进行字符串匹配和处理的时候最为强大的工具,绝大多数语言都提供了对正则表达式的支持。
总结:对于正则表达式的理解,我其实不是很清楚,但是我就是知道在用到一些模式串匹配的时候用它很方便,就是比如在一个字符串中查找是否有一个子串为xxx,java中虽然已经包装好了方法,但是其实里面用的就是正则表达式!
Java如何支持正则表达式的:
参考回答:
答题点:String各种方法支持,Pattern类表示正则表达式
Java中的String类提供了支持正则表达式操作的方法,包括:matches()、replaceAll()、replaceFirst()、split()。此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作
总结:实际上就是String中的一些方法内部是用正则表达式的,其次java中有一个包是专门用来支持正则表达式的java.util.regex,就是这个包,这个包中有两个类:
Pattern:
Pattern用于创建一个正则表达式,p.pattern()进行返回
Pattern.split:用于分割字符串
Pattern.matcher(String regex,CharSequence input):是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.
Matcher:
Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.
Matcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false
Matcher.matches()
Matcher.lookingAt()
Matcher.find()
简单用法举例:
这里matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public void findStrInStringUseRegularExpression(){
String data = "nishishui a wozhens des his!"+"I am noob " +
"from runoob.com.";
Pattern p = Pattern.compile(".*runoob.*"); //子串的正则表达式
System.out.println(p.pattern())//输出正则表达式 String类型的
Matcher matcher = p.matcher(data); //模式串
boolean states = matcher.matches();//进行正则匹配
System.out.println("字符串中是否包含了 'runoob' 子字符串? " + states);
}
输出:字符串中是否包含了 'runoob' 子字符串? true
再举一个例子:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegExpTest {
public static void main(String[] args) {
String str = "成都市(成华区)(武侯区)(高新区)";
Pattern p = Pattern.compile(".*?(?=\\()");
Matcher m = p.matcher(str);
if(m.find()) {
System.out.println(m.group());
}
}
}