黑马程序员--正则表达式

来源:互联网 发布:淘宝叶罗丽娃娃24元 编辑:程序博客网 时间:2024/06/06 18:53

   ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


关键字:正则表达式

正则表达式

符合一定规则的表达式。String类原有的方法,组合操作时很臃肿,正则表达式相对比较简洁。用字母“regex”表示正则表达式。

作用:用于操作字符串。

好处:简化了对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

特点:用一些特定的符号表示代码操作,简化书写。例如,自定义标签。

学习重点是特殊符号的使用。

具体操作功能:

1. 匹配。String类中的matches()方法。匹配的是整个字符串,有一个字符为假,整个字符串即为假。

  [abc],判断字符串上的字符是否是括号中的字符,而且这个字符串只有一个字符。想要校验第二个字符,只要在加上表达式即可。

  [a-z],单个字符是否属于az

  \d,需要再加一个\,转义成一个表达式。\成对出现。

  \w,邮箱名,字母、数字和下划线。

  X?X出现一次或没有。

2. 切割。split(),可以按符号对字符串进行切割。

   空格+,用于切割不确定的空格。

   .”在正则表达式中代表任意字符,需要使用转义字符“\\.”。

   \\”使用转义字符后才能使用,例如“\\\\”。

   按照叠词切割,例如,”kk”,即对前一个规则的结果重用。将这个规则封装成“组”:(.),第二位继续使用前一位的结果:(.)\\1;第三位继续使用前一位的结果:(.)\\1\\1,也可以使用+表示出现多次:(.)\\1+。数字标号的方法在这里有效,例如(.)\\1{2},表示3重叠词。组的出现都有标号,从1开始,想要使用组,可以通过\n获取,n为组的编号。例如,((())())4组,第一组是第一个左括号。

3. 替换,replaceAll()

  将数字替换成符号,例如,replaceDemo(ss,"\\d{5,}","#");

  $1指代前面规则中的第一个组,例如,replaceDemo(s1,"(.)\\1+","$1");将叠词替换成单个字符。$是个特殊的符号,1表示第一个组,没有数字表示整个字符串是一个组。

4. 获取,将字符串中符合规则的子串取出。

  操作步骤:

  1. 将正则表达式封装成Pattern对象。例如,Pattern p = Pattern.compile(regex);

  2. 将正则表达式和需要操作的字符串关联。例如,p.matcher(str)

  3. 关联后,获取正则匹配引擎。最终是通过匹配器Matcher类中的方法操作字符串,获得想要的数据。例如,Matcher m = p.matcher(str);

  4. 通过引擎对对符合规则的字符串进行操作,比如取出。例如,m.matches()

util包中的Pattern类封装了正则表达式对象。需要导包,java.util.regex.*

String类中的matches()方法,本质上是通过Pattern对象和Matcher对象中的matches()方法。将其封装进Stringmatches()方法,但功能比较单一。replaceAll()也是一样。

Matcher类中的方法:

find(),将规则作用到字符串上,并进行符合规则的子串查找。

group(),用于获取匹配后的结果。

边界匹配器,单词边界:\b。例如,String regex = "\\b[a-z]{4}\\b";,表示一个长度为4的单词。

start()end(),获得子串的起始、终结的角标位。含头不含尾。可以用于切割,只保留角标位以外的字符。

Matcher对象中封装有指针,会记住所处的位置,使用时注意指针的位置可能不是字符串起始位。

 

正则使用方法:

1.如果只想知道该字符串是对是错,使用匹配。

2. 想要将已有的字符串变成另一个字符串,使用替换。

3. 想要按照自定义方式将字符串变成多个字符串,使用切割。获取规则以外的字符串。

4. 想要获得符合要求的字符串的子串,使用获取,获取符合规则的子串。

 

网页爬虫(蜘蛛)

0 0