黑马程序员—javaSE—正则表达式

来源:互联网 发布:淘宝客软件购买多少钱 编辑:程序博客网 时间:2024/06/06 02:25

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1、正则表达式概述:
* 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
* 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的
*调用String类中的 matches()方法,判断正则表达式是否匹配。

2、字符类:
[ ]中括号只代表单个字符
[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](减去)

3、预定义字符类:
. 任何(意)字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

4、Greedy 数量词:
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

5、正则表达式的分割功能
调用String类的split()方法
例:String[] split(String regex)

6、正则表达式的替换功能
调用String类的replaceAll()方法
例: String replaceAll(String regex,String replacement)

重点:
正则表达式到底用四种功能中的哪一个呢?或者哪几个呢?
思路方式:
1,如果只想知道该字符是否对是错,使用匹配。
2,想要将已有的字符串变成另一个字符串,替换。
3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。

7、分组
按照叠词完成切割。为了可以让规则的结果被重用,可以将规则封装成一个组。
用()完成。组的出现都有编号。从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。

8、获取:
将字符串中的符合规则的子串取出。
操作步骤:
1,将正则表达式封装成对象。
2,让正则对象和要操作的字符串相关联。
3,关联后,获取正则匹配器。
4,通过引擎对符合规则的子串进行操作,比如取出。
*/
import java.util.regex.*;

class RegexDemo2
{
public static void main(String[] args)
{
getDemo();
}
public static void getDemo()
{
String str = “ming tian jiu yao fang jia le ,da jia。”;
System.out.println(str);
String reg = “\b[a-z]{4}\b”;

    //将规则封装成对象。    Pattern p = Pattern.compile(reg);    //让正则对象和要作用的字符串相关联。获取匹配器对象。    Matcher m  = p.matcher(str);    //System.out.println(m.matches());//其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。                                    //只不过被String的方法封装后,用起来较为简单。但是功能却单一。

// boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
// System.out.println(b);
// System.out.println(m.group());//用于获取匹配后结果。

    //System.out.println("matches:"+m.matches());    while(m.find())    {        System.out.println(m.group());        System.out.println(m.start()+"...."+m.end());    }}

}

正则表达式必须要掌握的内容:(绝对的重点)
/*
需求:对邮件地址进行校验。

*/public static void checkMail(){    String mail = "abc12@sina.com";    mail = "1@1.1";    String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。    reg = "\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配。    //mail.indexOf("@")!=-1    System.out.println(mail.matches(reg));}

10、Random类的概述
* 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
* 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

构造方法    * public Random()    * public Random(long seed)成员方法    * public int nextInt()    * public int nextInt(int n)(重点掌握)

11、System类的概述
* System 类包含一些有用的类字段和方法。它不能被实例化。

成员方法* public static void gc()* public static void exit(int status)* public static long currentTimeMillis()* pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

12、BigInteger的概述
* 可以让超过Integer范围内的数据进行运算

* B:构造方法    * public BigInteger(String val)* C:成员方法    * public BigInteger add(BigInteger val)    * public BigInteger subtract(BigInteger val)    * public BigInteger multiply(BigInteger val)    * public BigInteger divide(BigInteger val)    * public BigInteger[] divideAndRemainder(BigInteger val)

13、BigDecimal的概述
* 由于在运算的时候,float类型和double很容易丢失精度,演示案例。
* 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

* 不可变的、任意精度的有符号十进制数。构造方法    * public BigDecimal(String val)成员方法    * public BigDecimal add(BigDecimal augend)    * public BigDecimal subtract(BigDecimal subtrahend)    * public BigDecimal multiply(BigDecimal multiplicand)    * public BigDecimal divide(BigDecimal divisor)

14、Date类的概述
* 类 Date 表示特定的瞬间,精确到毫秒。
构造方法
* public Date()
* public Date(long date)
成员方法
* public long getTime()
* public void setTime(long time)

15、DateFormat类的概述
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat
 SimpleDateFormat构造方法
* public SimpleDateFormat()
* public SimpleDateFormat(String pattern)
成员方法
* public final String format(Date date)
* public Date parse(String source)

16、Calendar类的概述
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期) 提供了一些方法。
成员方法
* public static Calendar getInstance()
* public int get(int field)

17、常见对象(Calendar类的add()和set()方法)(掌握)
成员方法
* public void add(int field,int amount)
* public final void set(int year,int month,int date)

0 0
原创粉丝点击