import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp {
public static void main(String[] args) {
/* p("abc".matches("..."));//可以匹配,一个点代表一个字符
p("a8729a".replaceAll("\\d", "-"));//把数字全替换为横线,\\d代表一位数字
Pattern p = Pattern.compile("[a-z]{3}");//匹配三个字符,每个都是a-z
Matcher m = p.matcher("fgh");
p(m.matches());*/
// p("fgh".matches("[a-z]{3}"));//上边三句可合并为这一句
/**Greedy quantifiers 贪婪限定符,默认
* 初步认识 . * + ?即meta characters
* . 一个字符
* ? 一个或零个
* * 零个或多个
* + 一个或多个
* [n] 正好n个
* [n,]最少n个
* [n,m]至少n个最多m个
*/
/* p("a".matches("."));
p("aaaa".matches("a*"));
p("aaaa".matches("a+"));
p("aaaa".matches("a?"));
p("".matches("a*"));//零宽度匹配 zero length matches。空串匹配
p("".matches("a?"));
p("".matches("a+"));
p("1231231425346234".matches("\\d{3,100}"));//至少3个之多100个,且都是数字
p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
p("192".matches("[0-2][0-9][0-9]"));//一个中括号内是匹配一个字符
*/
/**
* ^取反
* -代表范围
* |代表或者
* &&代表并且
*/
/* p("a".matches("[abc]"));
p("a".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));//或的另一个写法
p("R".matches("[A-Z&&[RFG]]"));//交集,取A-Z与RFG集合交集的部分,其实就是RFG
*/
/**
*\d digit
*\D non-digit
*\s a whitespace character:如[ \t\n\x0B\f\r] 不可见的符号
*\S a non-whitespace character
*\w a word character: [a-zA-Z_0-9]包括下划线
*\W a non-word character
*/
/*p(" \n\r\t".matches("\\s{4}"));
p(" ".matches("\\S"));
p("a_8".matches("\\w{3}"));
p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));
p("\\".matches("\\\\"));//匹配一个\必须用两个\\
*/
/**
* POSIX Style
* POSIX (Portable Operating System Interface based on uniX)
* 以 unix 操作系统为基础的可携带操作系统界面
* 以 unix 操作系统为基础的操作系统标准
*/
/*p("a".matches("\\p{Lower}"));//很少这样写,不推荐
*/
/**
* boundary 边界匹配
* ^位于中括号里代表取反,在中括号外代表一行的起始位置
* $结尾
* \b word boundary
* \B non-word boundary
*/
/*p("hello sir".matches("^h.*"));
p("hello sir".matches(".*ir$"));
p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
import java.util.regex.Pattern;
public class RegExp {
public static void main(String[] args) {
/* p("abc".matches("..."));//可以匹配,一个点代表一个字符
p("a8729a".replaceAll("\\d", "-"));//把数字全替换为横线,\\d代表一位数字
Pattern p = Pattern.compile("[a-z]{3}");//匹配三个字符,每个都是a-z
Matcher m = p.matcher("fgh");
p(m.matches());*/
// p("fgh".matches("[a-z]{3}"));//上边三句可合并为这一句
/**Greedy quantifiers 贪婪限定符,默认
* 初步认识 . * + ?即meta characters
* . 一个字符
* ? 一个或零个
* * 零个或多个
* + 一个或多个
* [n] 正好n个
* [n,]最少n个
* [n,m]至少n个最多m个
*/
/* p("a".matches("."));
p("aaaa".matches("a*"));
p("aaaa".matches("a+"));
p("aaaa".matches("a?"));
p("".matches("a*"));//零宽度匹配 zero length matches。空串匹配
p("".matches("a?"));
p("".matches("a+"));
p("1231231425346234".matches("\\d{3,100}"));//至少3个之多100个,且都是数字
p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
p("192".matches("[0-2][0-9][0-9]"));//一个中括号内是匹配一个字符
*/
/**
* ^取反
* -代表范围
* |代表或者
* &&代表并且
*/
/* p("a".matches("[abc]"));
p("a".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));//或的另一个写法
p("R".matches("[A-Z&&[RFG]]"));//交集,取A-Z与RFG集合交集的部分,其实就是RFG
*/
/**
*\d digit
*\D non-digit
*\s a whitespace character:如[ \t\n\x0B\f\r] 不可见的符号
*\S a non-whitespace character
*\w a word character: [a-zA-Z_0-9]包括下划线
*\W a non-word character
*/
/*p(" \n\r\t".matches("\\s{4}"));
p(" ".matches("\\S"));
p("a_8".matches("\\w{3}"));
p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));
p("\\".matches("\\\\"));//匹配一个\必须用两个\\
*/
/**
* POSIX Style
* POSIX (Portable Operating System Interface based on uniX)
* 以 unix 操作系统为基础的可携带操作系统界面
* 以 unix 操作系统为基础的操作系统标准
*/
/*p("a".matches("\\p{Lower}"));//很少这样写,不推荐
*/
/**
* boundary 边界匹配
* ^位于中括号里代表取反,在中括号外代表一行的起始位置
* $结尾
* \b word boundary
* \B non-word boundary
*/
/*p("hello sir".matches("^h.*"));
p("hello sir".matches(".*ir$"));
p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
*/
/**whilte lines 空白行
* 此处空白行代表有空格的行。行开头就是换行符的不算作本例的空白行
*/
/*p(" \n".matches("^[\\s【开头是空白字符】&&[^\\n]]【并且不是换行符】*\\n$【末尾跟着换行符】"));
// " \n"即一个空白行
*/
}
public static void p(Object o) {
System.out.println(o);
}
}
/**whilte lines 空白行
* 此处空白行代表有空格的行。行开头就是换行符的不算作本例的空白行
*/
/*p(" \n".matches("^[\\s【开头是空白字符】&&[^\\n]]【并且不是换行符】*\\n$【末尾跟着换行符】"));
// " \n"即一个空白行
*/
}
public static void p(Object o) {
System.out.println(o);
}
}
No comments:
Post a Comment