正则表达式
来源:互联网 发布:crm数据分析 编辑:程序博客网 时间:2024/06/18 18:26
import java.util.regex.Matcher;import java.util.regex.Pattern;import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory.Zephyr;public class demo01 {public static void main(String[] args) {// TODO 自动生成的方法存根//matches()判断字符串是否匹配某个表达式,“.”表示任何一个字符p("abc".matches("..."));//将字符串“a2389a”中的数字用*替换,\d表示"0-9"数字p("a2389a".replaceAll("\\d", "*"));//将任何是a--z的字符串长度为3的字符串进行编译,这样可以加快匹配速度Pattern p=Pattern.compile("[a-z]{4}");//进行匹配,并将匹配结果放在Matcher对象中Matcher m=p.matcher("lkjh");p(m.matches());//上面的是三行代码可以用下面一行很代码代替p("abc".matches("[a-z]{3}"));/*** * * . 任何字符 a? a一次或一次也没有 a* a零次或多次 a+ a一次或多次 a{n}? a恰好 n 次 a{n,}? a至少n次 a{n,m}? a至少n次,但是不超过m次 *///初步认识. * + ?p("判断.:"+"a".matches("."));p("判断aa:"+"aa".matches("aa"));p("判断a*:"+"aaaa".matches("a*"));p("判断a+:"+"aaaa".matches("a+"));p("判断a*:"+"".matches("a*"));p("判断a?:"+"aaaa".matches("a?"));p("判断a?:"+"".matches("a?"));p("判断a?:"+"a".matches("a?"));p("判断{n}"+"139".matches("\\d{3,5}"));// \.是一个点p("判断IP:"+"192.168.0.a".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.[a-z]"));p("判断192:"+"192".matches("[0-2][0-9][0-9]"));/*** * * [abc] a、b 或 c(简单类)[^abc] 任何字符,除了 a、b 或 c(否定)[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)[a-z&&[def]] d、e 或 f(交集)[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) * */p("判断[abc]:"+"a".matches("[abc]"));p("判断[^abc]:"+"a".matches("[^abc]")+"-----e.matches:"+"e".matches("[^abc]"));p("判断[a-zA-Z]:"+"A".matches("[a-zA-Z]")+"------0.matches:"+"0".matches("[a-zA-Z]"));p("判断[a-z|A-Z]:"+"A".matches("[a-z|A-Z]")); //觉得跟上面没有区别p("判断[a-z[A-Z]]:"+"H".matches("[a-z[A-Z]]"));p("判断[a-z&&[def]]:"+"d".matches("[a-z&&[def]]")+"h------"+"h".matches("[a-z&&[def]]")+"--h------"+"h".matches("[a-z&&[deh]]"));p("判断[a-z&&[^hjk]]:"+"d".matches("[a-z&&[^hjk]]")+"------h:"+"h".matches("[a-z&&[^hjk]]")); //不带&&的意思是或p("判断[a-z&&[^a-h]]:"+"l".matches("[a-z&&[^a-h]]")+"-----a"+"a".matches("[a-z&&[^a-h]]"));/*** * * \d 数字:[0-9]\D 非数字: [^0-9]\s 空白字符:[ \t\n\x0B\f\r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非单词字符:[^\w] */p("判断数字和非数字:"+"5".matches("\\d")+"---a:"+"a".matches("\\d")+"----b:"+"b".matches("\\D"));char C=0xB;p(C);p("判断空格:"+"\t\n\f\r".matches("\\s{4}")+"-------"+"\f\"".matches("\\S{2}")+"\"\"".matches("\\S{2}"));p("判断数字+空格:"+"a_8".matches("\\w{2}")+"a".matches("\\w")+"------_"+"".matches("\\W"));p("abc888&^%".matches("[a-z]{1,3}\\d+[&^%]+"));p("\\".matches("\\\\"));p("判断单词"+"ancffBGG9777".matches("\\w+")+"----"+"%#$%&^%$##@@@".matches("\\W+"));//边界匹配符/**** * * ^ 行的开头 $ 行的结尾 \b 单词边界 \B 非单词边界 \A 输入的开头 \G 上一个匹配的结尾 \Z 输入的结尾,仅用于最后的结束符(如果有的话) \z 输入的结尾 */p("hello sir".matches("^h.*")); //以h开头p("hello sir".matches(".*ir$")); //以ir结尾p("hello sir".matches("^h[a-z]{1,3}o\\b\\ssir"));p("hellosir".matches("^h[a-z]{1,3}o\\b.*")+"----------------"+"hellosir".matches("^h[a-z]{1,3}o\\B.*"));//空白行:一个或多个(空白且非换行符)开头,并以换行符结尾p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//方法解析/*** * * * matches():匹配整个字符串find():匹配子字符串lookingAt():永远从整个字符串的开头开始匹配 */p("测试邮件地址:"+"liuch.....99@q...q....com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));Pattern p1=Pattern.compile("\\d[3,5]");Matcher m1=p1.matcher("123-34345-234-00"); //将整个"123-34345-234-00"用正则表达式引擎查找匹配,当到第一个"-"不匹配了,就停止, //但不会将不匹配的"-"吐出来p(m1.matches()); //将不匹配的"-"吐出来 m1.reset(); //1:当前面有p(m.matches());查找子字符串从"...34345-234-00"开始 //将会是第1,2两个查到"34345"和"234" 后面2个查不到为false //2:当前面有p(m.matches());和m.reset();查找子字符串从"123-34345-234-00"开始 //将为true,true,true,false p(m1.find()); p(m1.start()+"---"+m1.end()); p(m1.find()); p(m1.start()+"---"+m1.end()); p(m1.find()); p(m1.start()+"---"+m1.end()); p(m1.find()); //要是没找到就会报异常java.lang.IllegalStateException //p(m.start()+"---"+m.end()); p(m1.lookingAt()); p(m1.lookingAt()); p(m1.lookingAt()); p(m1.lookingAt()); //字符串替换 //Pattern.CASE_INSENSITIVE大小写不敏感 Pattern p2=Pattern.compile("java",Pattern.CASE_INSENSITIVE); Matcher m2=p2.matcher("java Java jAva ILoveJavA youHateJava adsdsfd"); //存放字符串 StringBuffer buffer=new StringBuffer(); //计数奇偶数 int i=0; while(m2.find()){ i++; if(i%2==0){ m2.appendReplacement(buffer, "java"); }else{ m2.appendReplacement(buffer, "JAVA"); } } //不加这句话,,字符串adsdsdf将会被丢弃 m.appendTail(buffer); p(buffer); //group分组,用()分组 Pattern p3=Pattern.compile("(\\d{3,5})([a-z]{2})"); String s="123aa--34345bb-234cc-000zs"; Matcher m3=p3.matcher(s); p(m3.groupCount()); while(m3.find()){ p("分组:"+m3.group()); p("分组1:"+m3.group(1)); p("分组2:"+m3.group(2)); }}public static void p(Object o){System.out.println(o);}}
0 0
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- mysql_Innodb的undo_log和redo_log
- 把汉字转换成拼音的util
- JS拖拽目标
- 实验吧安全杂项WP(五)
- 常用正则表达式
- 正则表达式
- Java程序员的面试经历和题库(转)
- JDBC驱动oci和thin区别
- NDK学习笔记<一> 初步认识JNI|成功搭建NDK开发环境
- 在Java中"=="和"equal"的区别
- Async异步流程控制
- Java-GUI(2)流式布局、边界布局、网格布局
- 关于Dapper.NET的相关论述
- 《响应式Web设计-HTML5和CSS3实战》阅读笔记第一章