正则表达式:用来作为模式或者规则进行匹配的
Pattern—一个用于正则表达式的类—正则表达式用于指定规则
[abc] 表示a/b/c中的任何一个
[^abc] 表示除了a/b/c
\d 表示数字
\D 表示非数字
\w 表示单词字符: [a-zA-Z_0-9]
\W 表示非单词字符
\s 表示空白字符
\S 表示非空白字符
^a 表示以a作为开头
a$ 表示以a作为结尾
. 表示任意字符
*表示出现零次或者多次
+表示至少出现一次
? 表示至多出现一次
{n} 表示恰好出现n次
{n,} 表示至少出现n次
{n,m} 表示至少出现n次,但是不超过m次
public class PetternDemo {
public static void main(String[] args) {
String s = "";
/*判断这个字符串是否是“abc”*/
System.out.println(s.matches("abc"));
/*
* 匹配字符串abc/abd/abe,使其为其中的一个
*/
System.out.println(s.matches("ab[cde]")); //中括号中的任何一个都可以
/*
* 匹配字符串:ab*,后面的无所谓
*/
System.out.println(s.matches("ab[a-zA-Z]")); //也就是a到z,A到Z都可以
/*
* 匹配任何数字
*/
System.out.println(s.matches("[0-9]"));
System.out.println(s.matches("\\d")); \d表示数字[0-9],用的时候需要转义
如果字符串是单个数字,写\\d即可,如果字符串有多个数字写\\d+
/*
* 匹配*de形式的字符串,但是*不能是a/b/c
*/
//^放在中括号里面,表示排除,不能是中括号的内容
System.out.println(s.matches("[^abc]de"));
/*
* 字符串必须以a作为开头,后面可以跟着任何字母的字符串
*/
//^在中括号外面是以什么为开头
System.out.println(s.matches("^a[a-zA-z]"));
/*
*必须以e作为结尾
*/
//$限定结尾
System.out.println(s.matches("[a-zA-z]e$"));
/*
* 匹配以a开头,以d结尾的有3个字符组成的字符串
*/
//.表示任意字符
System.out.println(s.matches("^a.d$"));
/*
* 匹配".txt"
*/
//由于.表示任意一个字符,所以此处需要转义。第一个\是java中的转义,第二个\是正则中的转义
//匹配中括号的时候,用的是\\[
System.out.println(s.matches("\\.txt"));
}
}
public class PetternDemo2 {
public static void main(String[] args) {
String s = "";
/*
* 匹配以a开头的由6个字符组成的字符串
*/
//a{n}---表示a恰好出现n次
System.out.println(s.matches("^a.{5}")); //.需要出现5次
/*
* 匹配以a开头的字符串
*/
//*-----表示后面的字符可有可无,出现不限次数
System.out.println(s.matches("^a.*"));
/*
* 匹配以a开头的至少由两个字符组成的字符串
*/
//+----表示之前的字符至少出现一次
System.out.println(s.matches("^a.+"));
/*
* 匹配以a开头的最多由2个字符组成的字符串
*/
//?---表示最多出现一次
System.out.println(s.matches("^a.?"));
/*
* 匹配至少由6个字符组成的字符串
*/
System.out.println(s.matches(".{6,}"));
/*
* 匹配由8到12个字符组成的字符串
*/
System.out.println(s.matches(".{8,12}"));
}
}
public class PetternDemo4 {
public static void main(String[] args) {
String s = "Tom 18 Sam 15 Amy 19";
/*
* 交换位置,捕获组也会自动编号,引用用$
*/
System.out.println(s.replaceAll("(Tom.*)(Sam.*)(Amy.*)", "$2 $3 $1"));
}
}
import java.util.Arrays;
public class PetternDemo5 {
public static void main(String[] args) {
String s = "fns3ueg55hu7e";
String[] ss = s.split("h");
//作为切割条件的字符会被舍弃
//如果切割符的后面有字符,则会切割,如果切割符的后面没有字符了,那么就直接舍弃该切割符,不会再切割
System.out.println(Arrays.toString(ss));
}
}