正則表達式定義了字符串的模式。java
正則表達式能夠用來搜索、編輯和處理文本。正則表達式
正則表達式並不只限於某一種語言,可是在每種語言中有細微的差異。app
正則表達式實例spa
一個字符串其實就是一個簡單的正則表達式,例如 Hello World 正則表達式匹配「Hello World」字符串。code
.(點號)也是一個正則表達式,他匹配任何一個字符如:「a「或者」1「。對象
Java正則表達式和Perl的是最爲類似的。blog
java.util.regex包主要包括如下三個類:索引
如下實例中使用了正則表達式 .*chinasouthtiger.* 用於查找字符串中是否包含了 chinasouthtiger 子串:ci
import java.util.regex.*; class RegexExample{ public static void main(String []args){ String content="I am noob "+"from chinasouthtiger.com"; String pattern=".*chinasouthtiger.*"; Boolean isMathch=Pattern.matches(pattern,content); System.out.println("字符串中是否包含了 ‘chinasouthtiger’字符子串?」+isMathch); } }
捕獲組是把多個字符當一個單獨單元進行處理的方法,它經過對括號內的字符分組來建立。字符串
例如,正則表達式 (dog) 建立了單一分組,組裏包含"d","o",和"g"。
捕獲組是經過從左至右計算其開括號來編號。例如,在表達式((A)(B(C))),有四個這樣的組:
能夠經過調用 matcher 對象的 groupCount 方法來查看錶達式有多少個分組。groupCount 方法返回一個 int 值,表示matcher對象當前有多個捕獲組。
還有一個特殊的組(group(0)),它老是表明整個表達式。該組不包括在 groupCount 的返回值中。
實例
下面的例子說明如何從一個給定的字符串中找到數字串:
package pkg2020華南虎; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author yl */ public class RegexMatches { public static void main(String[] args) { //按指定模式在字符串查找、 String line = "This order was placed for QT3000! OK?"; String pattern = "(\\D*)(\\d+)(.*)"; //建立patteern對象 Pattern r = Pattern.compile(pattern); //如今建立matcher對象 Matcher m = r.matcher(line); if (m.find()) { System.out.println("Found value:" + m.group(0)); System.out.println("Found value:" + m.group(1)); System.out.println("Found value:" + m.group(2)); System.out.println("Found value:" + m.group(3)); }else{ System.out.println("NO MATCH"); } } }
在其餘語言中,\\ 表示:我想要在正則表達式中插入一個普通的(字面意義)反斜槓。
在Java中,\\ 表示:我要插入一個正則表達式的反斜線,因此其後的字符具備特殊的意義。
因此,,在其餘語言中(如Perl),一個反斜槓 \ 就足以具備轉義的做用,而在Java正則表達式中則須要有兩個反斜槓才能被解析爲其餘語言中的轉義做用。也能夠簡單的理解在Java的正則表達式中,兩個 \\ 表明其餘語言中的一個 \,這也就是爲何表示一位數字的正則表達式是 \\d,而表示一個普通的反斜槓是 \\\\ 。
根據 Java Language Specification 的要求,Java 源代碼的字符串中的反斜線被解釋爲 Unicode 轉義或其餘字符轉義。所以必須在字符串字面值中使用兩個反斜線,表示正則表達式受到保護,不被 Java 字節碼編譯器解釋。例如,當解釋爲正則表達式時,字符串字面值 "\b" 與單個退格字符匹配,而 "\\b" 與單詞邊界匹配。字符串字面值 "\(hello\)" 是非法的,將致使編譯時錯誤;要與字符串 (hello) 匹配,必須使用字符串字面值 "\\(hello\\)"。