新浦京81707con > 注册购买 > 黑马程序员,正则表达式

原标题:黑马程序员,正则表达式

浏览次数:137 时间:2019-08-07

---------- android培养和磨练、java培训、期待与您调换! ---------- 

概述

顺应自然法规的表达式

专程用来操作字符串

概述

切合自然法则的表达式

特地用来操作字符串

一、概述

特点:

用以一些一定的标识来表示一些代码操作,那样就足以简化书写

故而读书正则表明式,正是在读书一些特殊符号的应用

特点:

用于一些一定的标志来表示一些代码操作,那样就可以简化书写

为此读书正则表明式,便是在上学一些特殊符号的运用

  1、 概念:符合一定准绳的表明式。

好处:

能够简化对字符串的复杂操作

好处:

能够简化对字符串的复杂性操作

  2、 成效:用于特地操作字符串。

弊端:

标识定义更加的多,正则越长,阅读性越差

弊端:

标识定义更加的多,正则越长,阅读性越差

  3、 特点:用某个一定的标记来表示一些代码操作,这样能够简化书写。

规则

上面只是一对简单易行的条条框框,具体详细法规查询API文书档案

Greedy 数量词
X?    X,一次或一回也未尝
X*    X,零次或频仍
X     X,一遍或频仍
X{n}    X,恰好 n 次
X{n,}    X,至少 n 次
X{n,m}    X,至少 n 次,不过不超过 m 次
   
字符类
[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](减去)
 
预订义字符类
.    任何字符(与行终止符恐怕十一分也说不定不协作)
d    数字:[0-9]
D    非数字: [^0-9]
s    空白字符:[ tnx0Bfr]
S    非空白字符:[^s]
w    单词字符:[a-zA-Z_0-9]
W    非单词字符:[^w]

组和捕获

捕获组能够因此从左到右总结其开括号来编号。比方,在公布式 ((A)(B(C))) 中,存在多个那样的组:

1        ((A)(B(C)))
2        A
3        (B(C))
4        (C)
组零始终表示全体表明式。

规则

上面只是局部简便的平整,具体详尽准则查询API文书档案

Greedy 数量词
X?    X,一次或一遍也未曾
X*    X,零次或频仍
X     X,叁次或频繁
X{n}    X,恰好 n 次
X{n,}    X,至少 n 次
X{n,m}    X,至少 n 次,然而不超过 m 次
   
字符类
[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](减去)
 
预订义字符类
.    任何字符(与行终止符只怕格外也恐怕不包容)
d    数字:[0-9]
D    非数字: [^0-9]
s    空白字符:[ tnx0Bfr]
S    非空白字符:[^s]
w    单词字符:[a-zA-Z_0-9]
W    非单词字符:[^w]

组和捕获

捕获组能够通过从左到右计算其开括号来编号。比如,在发挥式 ((A)(B(C))) 中,存在多少个那样的组:

1        ((A)(B(C)))
2        A
3        (B(C))
4        (C)
组零始终代表全数表明式。

  4、 好处:能够简化对字符串的头昏眼花操作。

Pattern与Matcher

java.util.regex包中定义了正则操作的相关对象

Pattern:正则表达式的编写翻译表现格局,内部封装了两种正则方式

Matcher:正则相配引擎,它是基于帕特tern发生的,每一个Pattern对象可与多个字符串进行相称,所以能够发生多个相配器Matcher

独立的调用顺序是

   1: Pattern p = Pattern.compile("a*b");

   2: Matcher m = p.matcher("aaaaab");

   3: boolean b = m.matches();

Pattern与Matcher

java.util.regex包中定义了正则操作的相干对象

Pattern:正则表明式的编写翻译表现情势,内部封装了各类正则情势

Matcher:正则相配引擎,它是基于Pattern爆发的,种种Pattern对象可与多少个字符串进行相称,所以能够生出多个相配器Matcher

标准的调用顺序是

   1: Pattern p = Pattern.compile("a*b");

   2: Matcher m = p.matcher("aaaaab");

   3: boolean b = m.matches();

  5、 缺陷:符合定义更多,正则越长,阅读性越差。

大面积操作

String类封装的多样字符串操作实际都以凭借Pattern与Matcher操作的,只但是封装起来更有益,可是效果相比单一

广大操作

String类封装的有余字符串操作实际都是基于帕特tern与Matcher操作的,只可是封装起来更实惠,但是意义相比单纯

二、常见准绳

String类中

匹配
boolean matches(String regex)
Tells whether or not this string matches the given regular expression.

切割
String[] split(String regex)
Splits this string around matches of the given regular expression.

替换
String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement.

String类中

匹配
boolean matches(String regex)
Tells whether or not this string matches the given regular expression.

切割
String[] split(String regex)
Splits this string around matches of the given regular expression.

替换
String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement.

  1、字符类

Matcher类中

boolean matches()
Attempts to match the entire region against the pattern.

String replaceAll(String replacement)
Replaces every subsequence of the input sequence that matches the pattern with the given replacement string.

boolean find()
Attempts to find the next subsequence of the input sequence that matches the pattern.

String group()
Returns the input subsequence matched by the previous match.

Matcher类中

boolean matches()
Attempts to match the entire region against the pattern.

String replaceAll(String replacement)
Replaces every subsequence of the input sequence that matches the pattern with the given replacement string.

boolean find()
Attempts to find the next subsequence of the input sequence that matches the pattern.

String group()
Returns the input subsequence matched by the previous match.

    [abc]:表示a、b或 c

实例

实例

    [^abc]:表示其他字符,除了 a、b或 c

去叠词

   1: String str = "我我...我我我...我我要..要要要要.要学学.学.学学学..编编编编.编..编编编.程.程程程.程程程程.程程";

   2:         

   3: //去掉字符“.”

   4: str = str.replaceAll("\. ","");

   5: //叠词变单字

   6: str = str.replaceAll("(.)\1 ","$1");

   7:  

   8: System.out.println(str);

去叠词

   1: String str = "我我...我我我...我我要..要要要要.要学学.学.学学学..编编编编.编..编编编.程.程程程.程程程程.程程";

   2:         

   3: //去掉字符“.”

   4: str = str.replaceAll("\. ","");

   5: //叠词变单字

   6: str = str.replaceAll("(.)\1 ","$1");

   7:  

   8: System.out.println(str);

    [a-zA-Z]:表示a到 z或 A 到 Z

IP排序

   1: String str = "192.168.0.1 10.10.10.10 2.2.2.2 255.255.255.255";

   2:  

   3: //每段都加上2个0

   4: str = str.replaceAll("(\d )","00$1");

   5:  

   6: //每段ip位数对齐成3位

   7: str = str.replaceAll("0 (\d{3})","$1");

   8:  

   9: //分段存放

  10: String[] arr = str.split(" ");

  11:  

  12: //存放到set集合中进行字符串排序

  13: TreeSet<String> ts = new TreeSet<String>();

  14:  

  15: for(String s : arr)

  16: {

  17:     ts.add(s);

  18: }

  19:  

  20: //去掉补齐的0位

  21: for(String s: ts)

  22: {

  23:     s = s.replaceAll("0 ([1-9] )","$1");

  24:     System.out.println(s);

  25: }

  26:  

  27: System.out.println(args.length);

IP排序

   1: String str = "192.168.0.1 10.10.10.10 2.2.2.2 255.255.255.255";

   2:  

   3: //每段都加上2个0

   4: str = str.replaceAll("(\d )","00$1");

   5:  

   6: //每段ip位数对齐成3位

   7: str = str.replaceAll("0 (\d{3})","$1");

   8:  

   9: //分段存放

  10: String[] arr = str.split(" ");

  11:  

  12: //存放到set集合中进行字符串排序

  13: TreeSet<String> ts = new TreeSet<String>();

  14:  

  15: for(String s : arr)

  16: {

  17:     ts.add(s);

  18: }

  19:  

  20: //去掉补齐的0位

  21: for(String s: ts)

  22: {

  23:     s = s.replaceAll("0 ([1-9] )","$1");

  24:     System.out.println(s);

  25: }

  26:  

  27: System.out.println(args.length);

    [a-d[m-p]]:表示a到 d或 m 到 p([a-dm-p](并集))

网页爬虫

   1: public static void getMail() throws Exception

   2: {

   3:     //网络上的url资源

   4:     URL url = new URL("http://www.cnblogs.com/feng-c-x/p/3300060.htm");

   5:     

   6:     //建立连接

   7:     URLConnection conn = url.openConnection();

   8:     

   9:     //封装读取流

  10:     BufferedReader bufr = 

  11:         new BufferedReader(new InputStreamReader(conn.getInputStream()));

  12:  

  13:     

  14:     String line = null;

  15:     

  16:     //定义正则邮箱规则

  17:     String regex = "\w @\w (\.\w ){1,3}";

  18:     

  19:     //编译成正则对象

  20:     Pattern p = Pattern.compile(regex);

  21:     

  22:     //遍历查找邮箱字符串

  23:     while( (line = bufr.readLine()) != null)

  24:     {

  25:         Matcher m = p.matcher(line);

  26:  

  27:         while(m.find())

  28:         {

  29:             System.out.println(m.group());

  30:         }

  31:     }

  32: }

网页爬虫

   1: public static void getMail() throws Exception

   2: {

   3:     //网络上的url资源

   4:     URL url = new URL("http://www.cnblogs.com/feng-c-x/p/3300060.htm");

   5:     

   6:     //建立连接

   7:     URLConnection conn = url.openConnection();

   8:     

   9:     //封装读取流

  10:     BufferedReader bufr = 

  11:         new BufferedReader(new InputStreamReader(conn.getInputStream()));

  12:  

  13:     

  14:     String line = null;

  15:     

  16:     //定义正则邮箱规则

  17:     String regex = "\w @\w (\.\w ){1,3}";

  18:     

  19:     //编译成正则对象

  20:     Pattern p = Pattern.compile(regex);

  21:     

  22:     //遍历查找邮箱字符串

  23:     while( (line = bufr.readLine()) != null)

  24:     {

  25:         Matcher m = p.matcher(line);

  26:  

  27:         while(m.find())

  28:         {

  29:             System.out.println(m.group());

  30:         }

  31:     }

  32: }

    [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](减去)

  2、预订义字符

    . : 任何字符(与行终止符恐怕特别也大概不协作)

    d:数字:[0-9]

    D:非数字: [^0-9]

    s:空白字符:[ tnx0Bfr]

    S:非空白字符:[^s]

    w:单词字符:[a-zA-Z_0-9]

    W:非单词字符:[^w]

  3、边界相称符

    ^:行的初步

    $ :行的尾声

本文由新浦京81707con发布于注册购买,转载请注明出处:黑马程序员,正则表达式

关键词: 新浦京81707con Java基础笔记

上一篇:上葡京娱乐场官网js开发微信小程序开源框架mp

下一篇:没有了