- 论坛徽章:
- 0
|
JAVA与正则表达式
javapatternmatcher正则表达式regex
Java代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/***
* JAVA正则表达式测试
* @author greatwqs
*
*/
public class RegexExpressionTest {
public static void main(String[] args) {
//简单认识正则表达式的概念
// =============================================================================
println("abc".matches("..."));
println("a8729a".replaceAll("\\d", "-"));
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("fgh");
println(m.matches());
println("fgha".matches("[a-z]{4}")); // matches是匹配整个字符串,在这里为"fgha"
//初步认识. * + ?==============================================================
// X* X出现0次以上(包括0次)
// X+ X出现1次以上(包括1次)
// println("a".matches("."));
// println("aa".matches("aa"));
// println("aaaa".matches("a*"));
// println("aaaa".matches("a+"));
// println("".matches("a*"));
// x? -- 0个或者一个x
// println("aaaa".matches("a?"));
// println("".matches("a?"));
// println("a".matches("a?"));
// x{3,100} x出现3-100次
// println("214523145234532".matches("\\d{3,100}"));
// println("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
// println("192".matches("[0-2][0-9][0-9]"));
// =============================================================================
//范围 ^在[]之间表示非,在最外面表示一行的开头
// println("a".matches("[abc]"));
// println("a".matches("[^abc]"));
// println("A".matches("[a-zA-Z]"));
// println("A".matches("[a-z]|[A-Z]"));
// println("A".matches("[a-z[A-Z]]")); // 相当于println("A".matches("[a-z]|[A-Z]"));
// println("R".matches("[A-Z&&[RFG]]"));
// =============================================================================
//认识\s \w \d \
// println(" \n\r\t".matches("\\s{4}")); //true
// println(" ".matches("\\S")); //false
// println("a_8".matches("\\w{3}")); //true
// println("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+")); // true \\d+ 表示数字出现1次以上
// println("\\".matches("\\\\")); //true
//"\\"为一个反斜线(JAVA语法); 在正则表达式中"\\"代表一个反斜线字符,
// 而这个在JAVA中\需要转义,所以正则表达式在JAVA中表示一个反斜线需要4个\,即"\\\\"
// =============================================================================
//POSIX Style 为Unix的一套标准
// println("a".matches("\\p{Lower}"));
/*\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r] */
// =============================================================================
//boundary 边界匹配开头(^)和结尾($)
// "^"在开头则表示一行的开始,EG: "^h.*"; "^"在[]里面表示非,EG: "[^1-9]"
//- println("hello sir".matches("^h.*")); // true
- // println("hello sir".matches(".*ir$")); // true
- // println("hello sir".matches("^h[a-z]{1,3}o\\b.*")); // true 正则"\b"表示单词边界
- // println("hellosir".matches("^h[a-z]{1,3}o\\b.*")); // false
-
- // =============================================================================
- //whilte lines 空白行
- // println(" \n".matches("^[\\s&&[^\\n]]*\\n$"));
- //
- // println("aaa 8888c".matches(".*\\d{4}."));
- // println("aaa 8888c".matches(".*\\b\\d{4}."));
- // println("aaa8888c".matches(".*\\d{4}."));
- // println("aaa8888c".matches(".*\\b\\d{4}.")); // false
-
- // =============================================================================
- // 匹配Email地址
- // println("greatwqs@163.com".matches("[\\w]+@[\\w]+\\.[\\w]+")); // "\\w"表示单词字符:[a-zA-Z_0-9]
- //email
- // println("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));
- // true [.-] ".","-"取其一
-
- // =============================================================================
- //matches find lookingAt
- // Pattern p = Pattern.compile("\\d{3,5}");
- // String s = "123-34345-234-00";
- // // 01234567890123456789
- // Matcher m = p.matcher(s);
- // // println(m.matches());
- // // m.reset(); // 进行重置, 相当于没有调用println(m.matches());
- // println(m.find()); // find找匹配的子串返回
- // println(m.start() + "-" + m.end());
- // println(s.substring(m.start(),m.end())); // 上面find匹配的子串
- // println(m.find());
- // println(m.start() + "-" + m.end());
- // println(m.find());
- // println(m.start() + "-" + m.end());
- // println(m.find());
- // // println(m.start() + "-" + m.end());
- // // 前面的println(m.find());为false, 所以表示没有子串匹配, 所以就不能打出下标
- // println(m.lookingAt());
- // // 从匹配的字符串的起始位置匹配相当于m.reset();再m.find();
- // println(m.lookingAt());
- // println(m.lookingAt());
- // println(m.lookingAt());
-
- // =============================================================================
- //replacement 字符串的替换
- // Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
- // Matcher m = p.matcher("java Java JAVa JaVa I love JAVA you hate Javaf");
- // println(m.replaceAll("JAVA"));
-
- // =============================================================================
- //group
- // Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
- // String s = "123aa-34345bb-234cc-00";
- // Matcher m = p.matcher(s);
- // while(m.find()) {
- // println(m.grouprintln()); // 打印子串
- // println(m.start() + "-" + m.end()); // 打印下标
- // println("");
- // }
-
- // =============================================================================
- //flags的简写
- // println("Java".matches("(?i)(java)"));
-
- // =============================================================================
- //replacement 字符串的替换, 偶数转化为小写,基数转化大写算法
- // Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
- // Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
- // StringBuffer buf = new StringBuffer();
- // int i=0;
- // while(m.find()) {
- // i++;
- // if(i%2 == 0) {
- // m.appendReplacement(buf, "java");
- // } else {
- // m.appendReplacement(buf, "JAVA");
- // }
- // }
- // m.appendTail(buf);
- // println(buf);
-
- }
-
- public static void println(Object o) {
- System.out.println(o);
- }
-
复制代码 |
|