---------------------- android培训、java培训、期待与您交流! ----------------------
正则表达式:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用一些特定的符号来表示一些代码操作,可以简化代码书写。学习正则表达式就是在学习一些特殊符号的使用。
好处:可以简化对复杂字符串的的操作。
弊端:符号定义越多,符号越长,阅读性极差。
具体体的功能:
1、匹配: String类中的方法 mathces方法。如果有一处不符合就返回false, 否则就返回true。
代码如下:
package regex; public class RegexDem { public static void main(String[] args) { checkQQ(); } // 对QQ号进行校验 * 要求:5-15位 不能以0开头 只能是数字 public static void checkQQ() { String qq = "353605301"; String regex = "[1-9]\\d{8,14}"; boolean flag = qq.matches(regex); if (flag) System.out.println("qq:" + qq); else System.out.println("qq不合法"); } }
2、切割:String类中的split方法。
按照多个空格切割
public class RegexDemo { public static void main(String[] args) { spiltDemo(); } public static void spiltDemo() { String str = "sun java jdbc"; String regex = " +";// 按照多个空格切割 String[] arr = str.split(regex); for (String s : arr) { System.out.println(s); } } }
按照叠词切割:
public class RegexDemo { public static void main(String[] args) { spiltDemo(); } public static void spiltDemo() { String str = "abcddefghiijkllmnouppqrst"; String regex = "(.)\\1+";// 加号表示多个 String[] arr = str.split(regex); for (String s : arr) { System.out.println(s); } } }
按照叠词切割. '.'表示任意字符,\\1表示第二位对前一个字符重用,可以将规则封装成一个组,用()来完成。组的出现都有编号,从1开始,想要使用已有的组,可以通过 \n (n为组的标号)形式的获取。
3、替换:String类中的replaceAll方法。
public class RegexDem { public static void main(String[] args) { String str1 = "abcdef1234567djfkdj7990dkjfk";// 将数字替换为“#” replaceAllDemo(str1, "\\d", "#"); String str2 = "abcddefghiijklllmnouppqrst";// 将叠词替换为单个字符 replaceAllDemo(str2, "(.)\\1+", "$1");// $1表示叠词的内容 } public static void replaceAllDemo(String str, String reg, String newStr) { str = str.replaceAll(reg, newStr); System.out.println(str); } }
4、获取
操作步骤:
1、将正则表达式封装成对象
2、将正则对象和要操作的字符串相关联
3、关联后获取匹配引擎
4、通过引擎对符合规则的字符进行操作,如获取。
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDem { public static void getDemo() { String str = "hello world 2012 shi shi jie mo ri ma?"; String reg = "\\b[a-z]{3}\\b";// 获取三个字符的单词,\\b 为单词边界 // 将正则表达式封装成对象 Pattern p = Pattern.compile(reg); // 将正则对象p和要操作的字符串str相关联,获取匹配器 Matcher m = p.matcher(str); while (m.find()) { // 将规则作用到字符串上,并查找。find 方法放回boolean类型 System.out.println(m.group()); } } }
String类中的matches方法用的就是Pattern对象Matcher对象来完成的。被String封装后用起来比较简单,但功能单一。
---------------------- android培训、java培训、期待与您交流! ----------------------