正規表示式簡單介紹,校驗qq號
正規表示式是用於字串的處理工具,超級強大.通過正規表示式可以對文字內容進行查詢,替換,分割等操作. 簡化對字串的複雜操作
好處:可以簡化字串的複雜操作
弊端:符號定義越多,正則越長,閱讀性極差
具有操作功能:
1.匹配:用string matches()方法匹配整個字串,只要有1處不符合,就返回false
2.切割:string split()
3.替換:string replaceall()
4.獲取
預定義字元類
. 任何字元(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\d 非數字: [^0-9]
\s 空白字元:[ \t\n\x0b\f\r]
\s 非空白字元:[^\s]
\w 單詞字元:[a-za-z_0-9]
\w 非單詞字元:[^\w]
greedy 數量詞
x? x,一次或一次也沒有
x x,零次或多次
x+ x,一次或多次
x x,恰好 n 次
x x,至少 n 次
x x,至少 n 次,但是不超過 m 次
為了可以讓規則的結果被重用,可以將規則封裝成組,用小括號完成,組的出現都有編號,
從1開始,想要使用已有的組,可以通過\n(n就是組的編號)的形式來獲取
public class regexdemo01
//替換字串
public static void replacealldemo()"; //連續超過5個的,數字(\d)
string newstr = "#";*/
//要求:將疊詞替換成$號 將重疊的字母替換成單個字母aaaa->a
string str = "dasfaaaafdsgsgggggggggggggregtr";
string reg = "(.)\\1+"; //組,重複出現1次或多次
string newstr = "$1\\$"; //替換成$,則需要轉義字元來弄一下 $可以獲取前面的正規表示式中組的資訊,1表示第1組,而第1組剛好是疊詞的第乙個字母,
str = str.replaceall(reg, newstr); //使用給定的 replacement 替換此字串所有匹配給定的正規表示式的子字串
system.out.println(str); }
//切割字串
public static void splitdemo() }
//校驗手機號 手機號段只有13*** 15*** 18***
public static void checktel()"; //第一位是1,第二位是3,5,8,後面的全是數字,共11位
boolean flag = tel.matches(regex); // 利用正規表示式,看是否符合格式
if (flag) else }
//校驗qq號,5-15位,全是數字,不能以0開始
public static void checkqq()"; // 第1位是1-9的數字,第二位是0-9的數字,且第二位可以有4-14個
boolean flag = qq.matches(regex); // 利用正規表示式,看是否符合格式
if (flag) else }
//[a-z&&[^bc]]:a-z的字母,除了b和c
public static void demo() "; // \代表後面有特殊符號,\d表示0-9的數字
boolean b = str.matches(reg);
system.out.println(b);
}}
下面是獲取的**:
public class regexdemo02
public static void getdemo()\\b";
//將規則封裝成物件
pattern p = pattern.compile(reg); //無建構函式,通過靜態方法返回已封裝好的pattern物件
//讓正則物件和要作用的字串相關聯 獲取匹配器引擎
matcher m = p.matcher(str); //matcher:通過解釋 pattern 對 character sequence 執行匹配操作的引擎。
//其實string類中的matcher()方法用的就是pattern和matcher來完成的,只不過用string方法封裝過,用起來簡單一些.
while(m.find())
}
}
下面是對於正規表示式的練習:
/**
* 2023年7月31日19:05:16
* 需求:
* 將下列字串轉成:我要學程式設計
* 將ip位址進行位址段順序的排序
* 對郵件位址進行校驗
* * @author xfhy
* 到底用四種功能中的哪乙個?或者哪幾個呢?
* 思路方式:
* 1,如果只想知道該字元是否有錯,使用匹配
* 2,想要將已有的字串變成另乙個字串,替換
* 3,想要按照自定的方式將字串變成多個字串,切割
* 4,想要拿到符合要求的字串,獲取
*/public class regextest01
public static void test(string str)
system.out.println();
//現在得到了字串"我我我我我我要要要要要要要要學學學學學學學編編編程式設計"
str = temp.tostring(); //將上面提取出來的字串轉成string型別
reg = "(.)\\1+"; //規則:任何字元出現了1次或多次,這是組
string newstr = "$1"; //將先前找到的字串替換成第一組
str = str.replaceall(reg, newstr); //規則,替換的原資料
system.out.println(str);
} /*
* 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30
* * 將ip位址進行位址段順序的排序
* * 還按照字串自然排序,只要讓它們每一段都是3位即可
* 1,按照每一段需要的最多的0補齊,那麼每一段 就會至少保證有3位
* 2,將每一段只保留3位,這樣,所有的ip位址都是每一段3位
* */
public static void ipsort())","$1"); //規則:0出現了0次或多次,組 儲存原來的1組
system.out.println(ip);
string arr = ip.split("[ ]"); //根據空格將每個ip位址分割出來
//自然排序
//for (int i = 0; i < arr.length; i++)
treesetts = new treeset(); //treeset本來就是有序的,新增進去就是有序的,就不用排序了
for(string s : arr)
for(string s : ts) }
/* * 需求:對郵件位址進行校驗
* */
public static void checkmail()";
system.out.println(mail.matches(reg)); //輸出是否對
}}
Java正規表示式
正規表示式結構簡介 字元 x 字元 x 反斜槓 0n 十進位制數 0 n 7 0nn 十進位制數 0nn 0 n 7 0mnn 十進位制數 0mnn 0 m 3,0 n 7 xhh 十六進製制數 0xhh uhhhh 十六進製制數 0xhhhh t 製表符 u0009 n 換行符 u000a r 回...
Java正規表示式
方便查詢的東西 基本語法 轉義字元 in d d d 數字0 9 多少到多少 d 非數字 0 9 非 w 單詞字元 a za z0 9 a3 w 非單詞字元 w s 空白 如 n t 0 1次 1 n次 0 n次 必須是n次 大於等於n次 n demo 中文 u0391 uffe5 英文 a za ...
Java正規表示式
舉例說明 the 開頭一定要有 the 字串 of despair 結尾一定要有 of despair 的字串 那麼,abc 就是要求以abc開頭和以abc結尾的字串,實際上是只有abc匹配。notice 匹配包含notice的字串。你可以看見如果你沒有用我們提到的兩個字元 最後乙個例子 就是說 模...