溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Java的正則表達式

發(fā)布時間:2020-08-31 17:25:16 來源:腳本之家 閱讀:183 作者:H.U.C-王子 欄目:編程語言

正則表達式概念

 正則表達式,又稱正規(guī)表示法、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。正則表過式用于操作字符串數(shù)據(jù)。

String類里有一個方法

public boolean matches(String regex)告知此字符串是否匹配給定的正則表達式。

 參數(shù): regex - 用來匹配此字符串的正則表達式

 返回: 當且僅當此字符串匹配給定的正則表達式時,返回 true

符號簡介:

\\匹配反斜線字符
\r匹配回車符
\t匹配制表符
\f匹配換頁符
\n匹配換行符
[abc]匹配abc中的一個
[^abc]匹配除了abc中的一個
[a-z]匹配指定范圍內的任意一個字符,例如,“[a-z]”可以匹配“a”到“z”范圍內的任意小寫字母字符。
[A-Z]匹配指定范圍內的任意一個字符,例如,“[A-Z]”可以匹配“A”到“Z”范圍內的任意大寫字母字符。
[a-d[m-p]] 匹配[a-d m-p]并集 //abcd mnop中的一個
[a-z&&[^bc]]匹配[ad-z]范圍內的任意字符//取a-z中的任意但不能取bc
 [a-z&&[^m-p]]匹配[a-l q-z]范圍內的任意字符//取a-z中的任意但不能取mnop
 [a-z&&[def]]匹配def交集中的任意字符
. 匹配除“\r\n”之外的任何單個字符
\d 匹配一個數(shù)字字符。等價于[0-9]
 \D 匹配一個非數(shù)字字符。等價于[^0-9]
 \s 匹配任何不可見字符,包括空格、制表符、換頁符等等。等價于[\f\n\r\t\v]
 \S 匹配任何可見字符。等價于[^\f\n\r\t\v]
 \w 匹配單詞字符:等價于[a-zA-Z_0-9]
 \W 匹配任何非單詞字符。等價于[^A-Za-z0-9_]
 ^ 匹配輸入字符串的開始位置
$ 匹配輸入字符串的結束位置
\b 匹配一個單詞邊界
\B 匹配非單詞邊界
? 匹配一次或一次沒有
* 匹配0次或多次
+ 匹配1次或多次
{n} 匹配恰好n次
{n,} 匹配至少n次
{n,m} 匹配至少n次,但不能超過m次匹配
\1 后向引用,表示表達式中,從左往右數(shù),第一個左括號對應的括號內的內容。以此類推,\2表示第二個,\0表示整個表達式

使用String類中的matches方法 例子:匹配手機號碼是否正確

public class RegDemo{ 
 public static void main(String[] args) { 
 String tel="13800001111"; 
 String reg="1[358]\\d{9}"; //1[358][0-9]{9} 
 boolean b=tel.matches(reg); 
 System.out.println(tel+":"+b); 
 }
 }

切割:使用String類中的split方法例子: 切割字符串

public class RegDemo{ 
 public static void main(String[] args) { 
 String str1="wang_yu_hang";
 String str2="zhao fei "; 
 String str3="tang.chun.lai";
 String [ ] strarr1=str1.split("_");
 String [ ] strarr2=str2.split(" +");
 String [ ] strarr3=str3.split("\\.");
 for(String str:strarr1){ 
 System.out.println(str);
 }
 }
 }

替換:使用String類中的replaceAll方法例子:替換字符串

public class RegDemo{
 public static void main(String[] args) { 
 String str="helloworld";
 str=str.replaceAll("o","xx");
 System.out.println(str);
 String ss = "tel12344556qq4564654add4646767"; 
 ss= ss.replaceAll("\\d{4,}", "#"); //4個或4個以上的數(shù)字連在一起的換成#
System.out.println(ss);
 }
 }

疊詞替換:想要替換重復出現(xiàn)的單詞,例如aa bbb cccc 任何的單詞都有可能重復,所以使用 .(點)匹配任意字符.然后使用() 括號將該單詞封裝到組中. 為了重復使用某些規(guī)則就將規(guī)則封裝為了組.使用()\1 1 是組號,\1引用了組.就是組中是什么這個位置也是什么.取值時,使用$1取第一個括號(組)中的值,以此類推。

獲取: 其實使用的是java.util.regex.Pattern 類; java.util.regex.Matcher 類

Matcher類中的常用方法 :

public boolean find() 嘗試查找與該模式匹配的輸入序列的下一個子序列。
public String group() 返回由以前匹配操作所匹配的輸入子序列。
public int start() 返回以前匹配的初始索引。
public int end() 返回最后匹配字符之后的偏移量。

例子:獲取字符串

public class RegDemo{
 public static void main(String[] args){
 Pattern p = Pattern.compile(“a*b”); //將正則表達式進行對象封裝
Matcher m = p.matcher(“aaaaab”);//用正則表達式的方法matcher和字符串關聯(lián),獲取對字符串操作的匹配對象
Matcher boolean b = m.matches();//通過Mather匹配器對象的方法對字符串進行操作
System.out.println(b); //匹配返回true,不匹配則返回false
 } 
 } 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI