不多说,直接上干货!
正则表达式是什么?
正则表达式是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z) 以及特殊字符(元字符) 组成的文字模式, 它用以描述在查找文字主体时需要匹配的一个或多个字符串。 正则表达式作为一个模板, 将某个字符模式与所搜索的字符串进行匹配 。
自从jdk1.4推出java.util.regex包, 为我们提供了很好的Java正则表达式应用平台。
Pattern和Matcher
Pattern类, 里面列出了全部的正则表达式内容。
1、逻辑运算符:
|:管道符.如:x|y表示x或y
():捕获组.(abc)|(xyz)表示abc或xyz
2、边界匹配符:
^:从头匹配
$:从尾匹配
RegexDemo.java
package zhouls.java.demo.regex; import java.util.regex.Matcher;//正则表达式 import java.util.regex.Pattern; public class RegexDemo { /* * 主函数 */ public static void main(String[] args) { //判断一个字符串是否是由纯数字组成的 String s = "1234567890"; boolean flag = method02(s); if(flag){ System.out.println("字符串是由纯数字组成的"); }else{ System.out.println("字符串不是由纯数字组成的"); } } /** * 使用正则表达式来判断 * @param s * @return */ public static boolean method02(String s) { /*Pattern pattern = Pattern.compile("[0-9]+"); Matcher matcher = pattern.matcher(s); if(matcher.matches()){ return true; }*/ if(Pattern.compile("[0-9]+").matcher(s).matches()){ return true; } return false; } /** * 取字符判断 * @param s * @return */ public static boolean method01(String s) { char[] chs = s.toCharArray(); boolean flag = true; for(char c : chs){ if(c < '0' || c > '9'){ flag = false; break; } } return flag; } }
RegexDemo02.scala
package zhouls.java.demo.regex; import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo02 { /* * 主函数 */ public static void main(String[] args) { //method01(); //method02(); //method03(); boolean flag = "2017-07-15".matches("\d{4}-\d{2}-\d{2}"); System.out.println("字符串日期是否合法:"+flag); String[] arr = "abc12abc123abc1234abc".split("\d+"); System.out.println(Arrays.toString(arr)); String ss = "abc12abc123abc1234abc".replaceAll("\d+", "_"); System.out.println(ss); } /** * 替换 */ public static void method03() { String s = "abc12abc123abc1234abc"; String regex = "\d+"; String ss = Pattern.compile(regex).matcher(s).replaceAll("_"); System.out.println(ss); } /** * 根据正则表达式进行拆分 */ public static void method02() { String s = "abc12abc123abc1234abc"; String regex = "\d+"; String[] arr = Pattern.compile(regex).split(s); System.out.println(Arrays.toString(arr)); } /** * 判断是否匹配 */ public static void method01() { //验证字符串是否是指定的格式 String s = "2017-07-15"; String regex = "\d{4}-\d{2}-\d{2}"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(s); if(matcher.matches()){ System.out.println("字符串日期合法"); }else{ System.out.println("字符串日期不合法"); } } }