根據(jù)運(yùn)行的環(huán)境,操作系統(tǒng)可以分為桌面操作系統(tǒng),手機(jī)操作系統(tǒng),服務(wù)器操作系統(tǒng),嵌入式操作系統(tǒng)等。 
正則表達(dá)式使用單個字符串來描述和匹配與某個語法規(guī)則匹配的一系列字符串. 在搜尋器中解析html時,可以使用常規(guī)規(guī)則輕松提取信息
本文使用JAVA語言表示正則表達(dá)式.
模式說明
w匹配字母,數(shù)字,下劃線
W匹配非字母,數(shù)字,下劃線
s匹配任何空白字符java正則表達(dá)式詳解,等同于[f]

S匹配任何非空字符
d匹配任何數(shù)字java正則表達(dá)式詳解,等于[0-9]
D匹配非數(shù)字字符
A匹配字符串的開頭
匹配字符串的結(jié)尾. 如果有換行符,則僅匹配換行符之前的結(jié)尾字符串
z匹配字符串的結(jié)尾,如果有換行符,它也會匹配換行符

G匹配最后一個匹配位置
匹配換行符
匹配標(biāo)簽
^匹配字符串的開頭
$匹配字符串的結(jié)尾
. 匹配換行符以外的任何字符

[^…]不在[]中的字符,例如[^ abc]與a,b,c以外的其他字符匹配
*匹配0個或更多表達(dá)式
+匹配一個或多個表達(dá)式
?以非貪婪方式匹配零個或上述正則表達(dá)式片段之一
()匹配括號中的表達(dá)式,也代表一個組
{n}精確匹配n個前面的表達(dá)式,例如d {n},代表n個數(shù)字

{n,m}以貪婪的方式將n匹配到前一個正則表達(dá)式定義的句段的m到m倍
代碼戰(zhàn)斗:
public class RegexAction {
public static void main(String[] args) {
String s = "Hello 123 4567 World_This is a Regex Demo";
//match_1(s);
//match_2(s);
//match_3(s);
//match_4(s);
//match_5(s);
match_6(s);
}
private static void match_1(String s) {
Pattern pattern = Pattern.compile("^Hello\s\d\d\d\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0));
}
}
private static void match_2(String s) {
Pattern pattern = Pattern.compile("Hello\s(\d+)\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整個結(jié)果
System.out.println(matcher.group(1)); //匹配到的第一個括號中的結(jié)果
}
}
private static void match_3(String s) {
Pattern pattern = Pattern.compile("Hello\s(\d*)\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整個結(jié)果
System.out.println(matcher.group(1)); //匹配到的第一個括號中的結(jié)果
}
}
private static void match_4(String s) {
Pattern pattern = Pattern.compile("Hello.*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整個結(jié)果
}
}
/**
* 貪婪匹配
* 匹配中間數(shù)字,只能得到7
* .*會盡可能多的匹配數(shù)據(jù)
* @param s
*/
private static void match_5(String s) {
Pattern pattern = Pattern.compile("Hello.*(\d+).*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(1)); //匹配到的整個結(jié)果
}
}
/**
* .*?非貪婪匹配
* @param s
*/
private static void match_6(String s) {
Pattern pattern = Pattern.compile("Hello.*?(\d+).*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group());
System.out.println(matcher.group(1));
}
}
/**
* 正則表達(dá)式字符串也可以不編譯直接使用
* @param s
*/
private static void match_7(String s) {
String regex = "Hello.*?(\d+).*Demo";
boolean flag = s.matches(regex);
System.out.println(flag);
}
}
模式類
模式對象是正則表達(dá)式的編譯表示形式
火柴人班
Matcher對象是一個解釋并匹配輸入字符串的引擎
find()方法
嘗試找到與模式匹配的輸入序列的下一個子序列,直到搜索到輸入序列的末尾為止
您可以從指定位置匹配查找(int開頭)
本文來自本站,轉(zhuǎn)載請注明本文網(wǎng)址: http://www.pc-fly.com/a/jisuanjixue/article-264551-1.html
|