正则表达式: 专门用于操作字符串的规则。 将一些操作代码通过一些符号体现。 好处: 1,方便了程序的编写。 2,可以用于对字符串的复杂操作。 弊端: 阅读性较差。 常用规则: []:限定某一位字符内容范围。 比如: [abc]:该位字符只能出现a或者b或者c。 [a-z]:改为字符只要是小写字母中的一个即可。 {}:限定前一个字符或者正则规则内容出现的次数。 比如: {3}:出现3次。 {3,}:至少出现3次。 {3,7}:出现3到7次。 数量规则: ?:出现一次或者0次。 * :出现了0次或者多次。 + :出现1次或者多次。 字符规则: \d: [0-9],数字。 \D: [^0-9],非数字。 \w: [a-zA-Z0-9_] \b: 单词边界。 \s: 空格,tab,\r \n. 组规则: 可以将正则表达式的结果通过()进行封装,以便于该规则内容被重用 技巧:当出现了嵌套组的时候,通过左括号来进行编号的判断。该编号从1开始。 如果使用已定好的组呢? 通过\n形式,反向引用组。()\\1+。 特殊: $ : 代表是行结束。 ^ : 行开始。 . : 代表任意字符。 -------- 对字符串操作的常见功能。 1,匹配。String matches(regex);其实最终使用的是Matcher匹配器对象。 需求:判断QQ号码。5~15 0不可以开头。 qq.matches("[1-9]\\d{4,14}"); 2,切割:String split(regex); 需求:如果想通过 . 的形式起个字符串。 split("\\."); 3,替换:String replaceAll(regex,str); 在regex表达式中使用了组。那么可以在str中的通过 $编号 的形式获取regex中的组。 需求:如果想将符合规则的内容替换成一个$符号。 replaceAll(regex,"\\$"); 需求:替换叠词,用叠词中的一个替换全部。 s.replaceAll("(.)\\1+","$1"); 4,查找:涉及到java.util.regex包中两个对象。Pattern ,Matcher。 1,将正则规则封装成Pattern对象。Pattern p = Pattern.compile(regex); 2,将规则对象和要作用的字符串相关联,获取匹配器对象。Matcher m = p.matcher(str); 3,通过匹配器对象find()将规则去操作字符串,如果找到返回true。 在通过group()方法获取找到符合规则的内容。 练习: 1,获取一段英文有三个字母组成的单词。 2,操作一组ip地址,按ip地址顺序排序。 3,Email规则。/*[a-zA-Z0-9_]*/ "\\w{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+" 4,网页爬虫。 遍历网页中的文本,将符合规则的信息获取。 应用场景: 注册表单的校验。