Don't talk much nonsense , Direct code :
package top.yangxianyang.test; import java.util.regex.Matcher; import 
java.util.regex.Pattern; import org.junit.Test; public class Test1 { //  matching  
@Test public void match() { String qq = "2017-09-19"; // 
 The format of the validation date is YYYY-MM-DD The regular expression for is  String regex = 
"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) 
"; //  The format of the validation date is DD/MM/YYYY The regular expression for is  String regex2 = 
"(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}))|(29/02/(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))"; 
boolean flag = qq.matches(regex); if (flag) System.out.println(qq + "...is 
ok"); else System.out.println(qq + "...  wrongful "); } //  cutting  @Test public void 
splitDemo() { String str = "avgabbageigaglsdabc"; String regex = "a";// 
 according to a To cut  String[] arr = str.split(regex); System.out.println(arr.length); for 
(String s : arr) { System.out.println(s); } } //  replace  @Test public void 
replaceAllDemo() { String str = "wer1389980000t545y1234564uiod234345675f"; // 
 Make the continuous length in the string greater than 5 Replace with #. str = str.replaceAll("\\d{5,}", "#"); 
System.out.println(str); } // Take out the substring that conforms to the rule in the string  @Test public void getDemo() { 
String str = "A regular expression, specified as a string,instance of this 
class."; System.out.println(str); String reg = "\\b[a-z]{2}\\b";// Match two letter words  
// Encapsulating rules as objects . Pattern p = Pattern.compile(reg); // Associate the regular object with the string to be used . Get matcher object . 
Matcher m = p.matcher(str); // actually String Class matches method . It's used Pattern and Matcher Object . 
// It's just that String After encapsulation , It's easy to use . But the function is single . // m.find(); Apply rules to strings , And find the substring in accordance with the rules . 
while(m.find()) { // m.group(); Used to get the result after matching . System.out.println(m.group()); // 
start()  The starting subscript of the character ( contain ) //end()  The ending subscript of the character ( Does not contain ) 
System.out.println(m.start()+"...."+m.end()); } } } 
 regular expression syntax  
  stay  Java  in ,\  express : I want to insert a backslash of a regular expression , So the following characters have special meaning .
  therefore , In other languages ( as Perl), A backslash  \  It is enough to have the function of escape , And in the  Java 
 Two backslashes are required in regular expressions in order to be parsed as escape functions in other languages . It can also be simply understood that  Java  In the regular expression of , Two  \  For one of the other languages  
\, That's why the regular expression for one digit is \d, And a common backslash is  \\.
 character   explain 
 \  Mark the next character as a special character , text , Reverse reference or octal escape character . for example ,“n" Matching characters "n”."\n" Match line breaks . sequence "\\“ matching ”\","\(“ matching ”(".
 ^  Matches the start of the input string . If the  RegExp  Object's  Multiline  attribute ,^  Will also be associated with "\n" or "\r" Position matching after .
 $  Matches the end of the input string . If the  RegExp  Object's  Multiline  attribute ,$  Will also be associated with "\n" or "\r" Previous position matching .
 *  Matches the preceding character or subexpression zero or more times . for example ,zo*  matching "z" and "zoo".*  Equivalent to  {0,}. 
 *  Matches the preceding character or subexpression one or more times . for example ,“zo+“ And "zo" and "zoo" matching , But with "z" Mismatch .+  Equivalent to  {1,}.
 ?  Matches the preceding character or subexpression zero or once . for example ,“do(es)?“ matching "do" or "does" Medium "do”.?  Equivalent to  {0,1}.
 {n} n  Is a nonnegative integer . Exactly match  n  second . for example ,“o{2}“ And "Bob" Medium "o" Mismatch , But with "food" Two of them "o" matching .
 {n,} n  Is a nonnegative integer . At least match  n  second . for example ,“o{2,}“ Mismatch "Bob" Medium "o”, And match "foooood" All in  
o.“o{1,}“ Equivalent to "o+”.“o{0,}“ Equivalent to "o*”.
 {n,m} m  and  n  Is a nonnegative integer , among  n <= m. Match at least  n  second , at most  m  second . for example ,“o{1,3}“ matching "fooooood" The first three in  
o.‘o{0,1}’  Equivalent to  ‘o?’. be careful : You cannot insert spaces between commas and numbers .
 ? 
 When this character follows any other qualifier (*,+,?{n},{n,},{n,m}) After , The matching pattern is " Not greedy ”.“ Not greedy " Pattern matching , As short as possible , And the default " Greedy " Pattern matching , String as long as possible . for example , In string "oooo" in ,“o+?“ Match only single "o”, and "o+“ Match all "o”.
 .  Matched Division ”\r\n" Any single character other than . To match, include ”\r\n" Any character within , Please use such as ”[\s\S]“ A pattern like that .
 (pattern)  matching  pattern  And capture the matching subexpression . have access to  $0…$9  Attribute from result " matching " Retrieve the captured matches in the collection . To match bracket characters  ( 
), Please use ”(“ perhaps ”)”.
 (?:pattern)  matching  pattern  However, the subexpression of the match is not captured , That is, it is a non capture match , Do not store matches for later use . This is useful for "or" character  (|) 
 The case for combining pattern components is useful . for example ,'industr(?:y|ies)  It's better than that  ‘industry|industries’  More economical expression .
 (?=pattern)  Subexpression that performs a forward prediction look ahead search , The expression match is at match  pattern 
 The starting point of the string . It is a non capture match , That is, you cannot capture matches for later use . for example ,‘Windows (?=95|98|NT|2000)’  matching "Windows 
2000" Medium "Windows”, But it doesn't match "Windows 
3.1" Medium "Windows”. Prediction first does not take up characters , After a match occurs , The search for the next match follows the previous match , Not after the characters that make up the prediction first .
 (?!pattern)  Subexpression that performs a reverse prediction look ahead search , The expression match is not in a match  pattern 
 The search string for the starting point of the string . It is a non capture match , That is, you cannot capture matches for later use . for example ,‘Windows (?!95|98|NT|2000)’ 
 matching "Windows 3.1" Medium  “Windows”, But it doesn't match "Windows 
2000" Medium "Windows”. Prediction first does not take up characters , After a match occurs , The search for the next match follows the previous match , Not after the characters that make up the prediction first .
 x|y  matching  x  or  y. for example ,‘z|food’  matching "z" or "food”.’(z|f)ood’  matching "zood" or "food”.
 [xyz]  character set . Match any character contained . for example ,”[abc]“ matching "plain" Medium "a”.
 [^xyz]  Reverse character set . Matches any characters that are not included . for example ,”[^abc]“ matching "plain" in "p”,“l”,“i”,“n”.
 [a-z]  character in range . Matches any character in the specified range . for example ,"[a-z]“ matching "a" reach "z" Any lowercase letter in the range .
 [^a-z]  Reverse range character . Matches any character that is not in the specified range . for example ,”[^a-z]“ Match any not in "a" reach "z" Any character in the range .
 \b  Match a word boundary , The position between the word and the space . for example ,“er\b" matching "never" Medium "er”, But it doesn't match "verb" Medium "er”.
 \B  Non word boundary matching .“er\B" matching "verb" Medium "er”, But it doesn't match "never" Medium "er".
 \cx  matching  x  Indicated control character . for example ,\cM  matching  Control-M  Or carriage return .x  The value of must be in  A-Z  or  a-z  between . If not , It is assumed that  c 
 namely "c" The character itself .
 \d  Digit character matching . Equivalent to  [0-9].
 \D  Non numeric character matching . Equivalent to  [^0-9].
 \f  Page break matching . Equivalent to  \x0c  and  \cL.
 \n  Newline matching . Equivalent to  \x0a  and  \cJ.
 \r  Match a carriage return . Equivalent to  \x0d  and  \cM.
 \s  Match any white space characters , Include spaces , Tab , Page break, etc . And  [ \f\n\r\t\v]  equivalent .
 \S  Matches any non white space characters . And  [^ \f\n\r\t\v]  equivalent .
 \t  Tab matching . And  \x09  and  \cI  equivalent .
 \v  Vertical tab matching . And  \x0b  and  \cK  equivalent .
 \w  Match any word type character , Include underscores . And "[A-Za-z0-9_]“ equivalent .
 \W  Matches any non word character . And ”[^A-Za-z0-9_]“ equivalent .
 \xn  matching  n, Here's  n 
 It's a hexadecimal escape code . The hexadecimal escape code must be exactly two digits long . for example ,”\x41" matching "A"."\x041" And "\x04"&“1" equivalent . Allow use in regular expressions  
ASCII  code .
 \num  matching  num, Here's  num  Is a positive integer . Reverse reference to capture match . for example ,”(.)\1" Matches two consecutive identical characters .
 \n  Identifies an octal escape code or reverse reference . If  \n  At least in front  n  Capture subexpressions , that  n  It's a reverse reference . otherwise , If  n  It's an octal number  (0-7), that  
n It's an octal escape code .
 \nm  Identifies an octal escape code or reverse reference . If  \nm  At least in front  nm  Capture subexpressions , that  nm  It's a reverse reference . If  \nm  At least in front  n  Catches , be  
n  It's a reverse reference , Followed by character  m. If neither of the preceding conditions exists , be  \nm  Match octal value  nm, among  n  and  m  The number is octal  (0-7).
 \nml  When  n  It's an octal number  (0-3),m  and  l  It's an octal number  (0-7)  Time , Match octal escape code  nml.
 \un  matching  n, among  n  It is expressed in four hexadecimal numbers  Unicode  character . for example ,\u00A9  Match copyright symbols  (©).
  according to  Java Language Specification  Requirements of ,Java  The backslash in the string of the source code is interpreted as  Unicode 
 Escape or other character escape . Therefore, you must use two backslashes in the string literal value , Indicates that the regular expression is protected , Not to be  Java  Bytecode compiler interpretation . for example , When interpreted as a regular expression , string literal   
“\b”  Match with a single backspace character , and  “\b”  Match word boundaries . string literal   “(hello)”  It's illegal , Will cause compile time errors ; To match the string  (hello) 
 matching , String literal value must be used  “\(hello\)”. 
Technology