.  any character

\d  A digit 0-9

\D  a non-digit [^0-9]

\s  a whitespace character, 空白字符

\S  a non-whitespace character

\w  a word character   [a-zA-Z0-9]

\W  a non-word character

X规范:

X:必须出现一次

X?, 0,1

X*, 0或者多次

X+, 1, n

X{n}, 必须出现n次

X{n,m}, 必须出现n~m次

X{n,}, 必须出现n次以上

XY, X后跟着Y规范

X|Y, X或Y规范

(X) 捕捉组规范

String str="1983-07-27"
String pat="\\d{4}-\\d{2}-\\d{2}";
if(Pattern.compile(pat).matcher(str).matches())
{
System.out.println("日期格式合法");
}

String的三个方法是支持正则的 matches, replaceAll,split

字符串拆分, 替换, 验证:

import java.util.regex.Pattern ;
import java.util.regex.Matcher ;
public class RegexDemo05{
public static void main(String args[]){
String str1 = "A1B22C333D4444E55555F".replaceAll("\\d+","_") ; //replaceAll
boolean temp = "1983-07-27".matches("\\d{4}-\\d{2}-\\d{2}") ; //matches
String s[] = "A1B22C333D4444E55555F".split("\\d+") ; //split
System.out.println("字符串替换操作:" + str1) ;
System.out.println("字符串验证:" + temp) ;
System.out.print("字符串的拆分:") ;
for(int x=0;x<s.length;x++){
System.out.print(s[x] + "\t") ;
}
}
};

注意拆分 |

import java.util.regex.Pattern ;
import java.util.regex.Matcher ;
public class RegexDemo07{
public static void main(String args[]){
String info = "LXH:98|MLDN:90|LI:100" ; // 定义一个字符串
// 拆分的形式:
/*
LXH --> 98
MLDN --> 90
LI --> 100
*/
String s[] = info.split("\\|") ;
System.out.println("字符串的拆分:") ;
for(int x=0;x<s.length;x++){
String s2[] = s[x].split(":") ;
System.out.println(s2[0] + "\t" + s2[1]) ;
}
}
};

  

  

  

package DAO;

import java.util.regex.Matcher;
import java.util.regex.Pattern; public class TestReg {
public static void main(String[] args) throws Exception{
/*System.out.println("abc".matches("...")); //true ctrl+shift+/ 注释
System.out.println("a898938593a".replaceAll("\\d","-")); //a---------a
Pattern p = Pattern.compile("[a-z]{3}"); //匹配具有3个字符的字符串
Matcher m = p.matcher("abc");
System.out.println(m.matches()); //true
*/ //初步认识 . * + ?, meta characters
/*p("a".matches(".")); // true
p("aa".matches("aa")); // true
p("aaaa".matches("a*")); // true 0或者n
p("aaaa".matches("a+")); // true 1或者n
p("aaaa".matches("a?")); // false 0或者1
p("".matches("a*")); // true 0或者n
p("".matches("a+")); // true 1或者n
p("".matches("a?")); // true 0或者1
p("215454545454545".matches("\\d{3,100}")); // true 3~100个
p("192.168.000.111".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")); //true
p("192".matches("[0-2][0-9][0-9]")); //true
*/
//范围
/*p("a".matches("[abc]")); // true []取出一个字符
p("a".matches("[^abc]")); // false []取出一个字符
p("A".matches("[a-zA-Z]")); // true []取出一个字符
p("A".matches("[a-z]|[A-Z]")); // true []取出一个字符
p("A".matches("[a-z[A-Z]]")); // true []取出一个字符
p("R".matches("[A-Z&&|[RFG]]")); // true []取出一个字符
*/
//认识 \s \w \d
/*p(" \n\r\t".matches("\\s{4}")); //true 4个空白字符
p(" ".matches("S")); //false S代表非空白字符
p("a_8".matches("\\w{3}")); //true
p("abc888&^%".matches("[a-z]{1,3}\\d+[&^$%]+")); //true 1-3个字母, 1或n个数字, [&^$%]里任意1或n个
p("\\".matches("\\\\")); //正则表达式里 2个\\只代表一个转义字符
*/ //POSIX Style
//p("a".matches("\\p{Lower}")); //boundary
/*p("hello sir".matches("^h.*")); //true
p("hello sir".matches(".*ir$")); //true
p("hello sir".matches("^h[a-z]{1,3}o\\b.*")); //true
p("hellosir".matches("^h[a-z]{1,3}o\\b.*")); //true \b是空格, 换行等单词边界
*/ //white lines 空白行
//p(" \n".matches("^[\\s&&[^\\n]]*\\n$")); //true 开头是空白符, 而且不是回车, 0或n次, 后面紧跟着换行符 //practice
/*p("aaa 8888c".matches(".*\\d{4}.")); //true 0或n个字母, 4位数字, 然后有一个字母
p("aaa 8888c".matches(".*\\b\\d{4}.")); //true 0或n个字母, 4位数字前面有个单词边界, 然后有一个字母
p("aaa8888c".matches(".*\\d{4}.")); //true 0或n个字母, 4位数字, 然后有一个字母
p("aaa8888c".matches(".*\\b\\d{4}.")); //false 0或n个字母, 4位数字前面没有单词边界, 然后有一个字母
*/ //email
//p("adjkfjdksjfdksfjd@djfkjdkjsfd.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+")); //true //matches find lookingAt start end matches每次找整个串, find找字串, lookingAt每次都从头找
/*Pattern p = Pattern.compile("\\d{3,5}");
String s = "123-34345-234-00";
Matcher m = p.matcher(s);
p(m.matches()); //把123-给吃了, 所以要reset以下. 否则, 如果不reset的话, 只有2个true 34345 234
m.reset(); //为了把matches吃掉的字符恢复
p(m.find()); //true 找一个匹配的字串 123
p(m.start()+"-"+m.end()); //0-3
p(m.find()); //true 找一个匹配的字串 34345
p(m.start()+"-"+m.end()); //4-9
p(m.find());//true找一个匹配的字串234
p(m.start()+"-"+m.end()); //10-13
p(m.find()); // false 00
p(m.lookingAt()); //true 只从head开始找, 所以是123
p(m.lookingAt()); //true 只从head开始找, 所以是123
p(m.lookingAt()); //true 只从head开始找, 所以是123
p(m.lookingAt()); //true 只从head开始找, 所以是123
*/ //replacement
Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava");
StringBuffer buf = new StringBuffer();
int i=0;
/*while(m.find()){
p(m.group()); //列出所有java字样的
}
*/
while(m.find()){
i++;
if(i%2==0){
m.appendReplacement(buf, "java"); //偶数都是java
}
else{
m.appendReplacement(buf, "JAVA");//奇数都是JAVA
} }
m.appendTail(buf);
p(buf); //列出所有java字样的 }
public static void p(Object o){
System.out.println(o);
}
}

  

JAVA基础--正则表达式的更多相关文章

  1. Java基础-正则表达式(Regular Expression)语法规则简介

    Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...

  2. Java基础——正则表达式

    一.什么是正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符 ...

  3. Java基础--正则表达式的规则

    注意:正则表达式只关注格式是否正确,不关注内容是否有效. 一.字符集合, []表示一个字符. 1.[abc] :指a,b,c中的任意一个字符. 2.[^abc]:指除了a,b,c外的任意字符. 3.[ ...

  4. 二十八、Java基础--------正则表达式

    在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题.为了更好的学 ...

  5. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  6. 黑马程序员:Java基础总结----正则表达式

    黑马程序员:Java基础总结 正则表达式   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import  java.util.regex.*; 符合一定规 ...

  7. Java基础七-正则表达式

    Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...

  8. Java基础学习总结(35)——Java正则表达式详解

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu  ...

  9. Java基础 -- 字符串(格式化输出、正则表达式)

    一 字符串 1.不可变String String对象是不可变的,查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后 ...

随机推荐

  1. MySQL启动相关知识

    使用mysqld和mysqld_safe启动的区别 直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本[注意:mysqld_safe只是一个脚本]会在启动MySQL服 ...

  2. 移植 wifi模块

    本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...

  3. 为什么要 urlencode()

    1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的2. 因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 ...

  4. group_concat()函数总结

    group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组, ...

  5. Webdriver+testNG+ReportNG+Maven+SVN+Jenkins自动化测试框架的pom.xml配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. Loadrunner之脚本的调试和保存(六)

    一.调试脚本 脚本录制完毕后,按F5键或单击菜单上的RUN按钮,可以运行脚本.       在VIRTUAL USER GENERATOR中运行脚本的作用,主要是查看录制的脚本能否正常通过,如果有问题 ...

  7. UMeng崩溃日志如何进行symbiolicate

    Application received signal SIGSEGV (null) ( 0 CoreFoundation 0x2f2dde9b + 154 1 libobjc.A.dylib 0x3 ...

  8. Lucene中的合并因子mergeFactor

    mergeFactor 是用来决定segment该如何被addDocument()方法进行合并的. 当mergeFactor取比较小的值时,索引时所使用的内存较少 而且搜素未优化的速度会比较快.因此, ...

  9. UVALive 2403 77377解题报告(深搜)

    题意:给你一些固定的字符串,在给出数字,根据键盘的对应关系,输出所有的满足条件的字符串,输出顺序无所谓. 思路:因为题目说了,输出比较小,说明测试数据并不强,所以可以暴力回溯求出答案,将所有的给出的字 ...

  10. cocos2d-x 那些常犯的错误

    Label::_label; if(_label==NULL){ //初始化_label的代码 } //指针默认值不等于NULL,需要赋初始值Label::_label=NULL; string st ...