1. 程式人生 > >java正則表示式用法

java正則表示式用法

Pattern p2=Pattern.compile("\\d+");
Matcher m2=p2.matcher("aaa2223bb");
System.out.println(m2.find());
//m2.find();//匹配2223
System.out.println(m2.start());
//m2.start();//返回3
System.out.println(m2.end());
//m2.end();//返回7,返回的是2223後的索引號
System.out.println(m2.group());
//m2.group();//返回2223

java正則表示式通過java.util.regex

包下的Pattern類與Matcher類實現

Pattern類用於建立一個正則表示式,也可以說建立一個匹配模式,它的構造方法是私有的,不可以直接建立,但可以通過Pattern.complie(String regex)簡單工廠方法建立一個正則表示式,

Pattern p2=Pattern.compile("\\d+");
</pre><span style="font-family:Arial; font-size:14px; line-height:26px">Matcher類的構造方法也是私有的,不能隨意建立,只能通過Pattern.matcher(CharSequence input)方法得到該類的例項.</span><p></p><p><span style="white-space:pre"><span style="font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:Arial; font-size:14px; line-height:26px"></span></span></span></span></p><pre name="code" class="java">Matcher m2=p2.matcher("aaa2223bb");
Matcher類提供三個匹配操作方法,三個方法均返回boolean型別,當匹配到時返回true,沒匹配到則返回false

matches()對整個字串進行匹配,只有整個字串都匹配了才返回true

lookingAt()對字串前面的字元進行匹配,只有匹配到的字串在最前面才返回true

find()對字串進行匹配,匹配到的字串可以在任何位置.

使用下面3個函式可以獲取匹配到的子字串的位置:

Mathcer.start()Matcher.end()Matcher.group()

start()返回匹配到的子字串在字串中的索引位置. end()返回匹配到的子字串的最後一個字元下一個位置的索引 group()返回匹配到的子字串
現在我們使用一下稍微高階點的正則匹配操作,例如有一段文字,裡面有很多數字,而且這些數字是分開的,我們現在要將文字中所有數字都取出來,利用java的正則操作是那麼的簡單. Java程式碼示例: Pattern p=Pattern.compile("\\d+"); Matcher m=p.matcher("我的QQ是:456456 我的電話是:0532214 我的郵箱是:
[email protected]
"); while(m.find()) {     System.out.println(m.group()); } 輸出: 456456 0532214 123

二、Matcher.replaceAll(String replacement) / Matcher.replaceFirst(String replacement)

1、String方法

String.replaceAll()和String.replaceFirst()兩個方法的功能,其實它與Matcher.replaceAll()和Matcher.replaceFirst()的功能是一樣的

String str="我的QQ是:456456 我的電話是:0532214 我的郵箱是:[email protected]"; System.out.println(str.replaceAll("\\d","*")); 輸出: 我的QQ是:****** 我的電話是:******* 我的郵箱是:aaa***@aaa.com 2、Matcher方法 Pattern p=Pattern.compile("//d"); Matcher m=p.matcher("我的QQ是:456456 我的電話是:0532214 我的郵箱是:[email protected]"); System.out.println(m.replaceAll("*")); 輸出: 我的QQ是:****** 我的電話是:******* 我的郵箱是:aaa***@aaa.com 三、Matcher.appendReplacement(StringBuffer sb, String replacement) / Matcher.appendTail(StringBuffer sb) 將當前匹配子串替換為指定字串,並且將替換後的子串以及其之前到上次匹配子串之後的字串段新增到一個StringBuffer物件裡, 而appendTai­l(StringBuffer sb) 方法則將最後一次匹配工作後剩餘的字串新增到一個StringBuffer物件裡.
例子:
Pattern p=Pattern.compile("\\d+");
		Matcher m=p.matcher("我的QQ是:456456 我的電話是:0532214 我的郵箱是:[email protected]");
		m.find();  //匹配到456456
		StringBuffer sb=new StringBuffer();
		m.appendReplacement(sb,"*");  //將456456之前的字串追加到sb,再將456456替換為*,並追加到sb
		System.out.println(sb.toString());
		m.appendTail(sb);  //將前面替換過的內容連線後面未替換過的內容,並放入sb
		System.out.println(sb.toString());



相關推薦

java表示式用法

Pattern p2=Pattern.compile("\\d+"); Matcher m2=p2.matcher("aaa2223bb"); System.out.println(m2.find()); //m2.find();//匹配2223 System.out.pr

JAVA表示式高階用法(分組與捕獲)

 正則表示式在字串處理中經常使用,關於正則簡單的用法相信有一點程式基礎的人都懂得一些,這裡就不介紹簡單基礎了。這裡主要講解一下在JAVA中實現了的正則的高階用法-分組與捕獲。     對於要重複單個字元,非常簡單,直接在字元後賣弄加上限定符即可,例如 a+ 表示匹配1個或

Java表示式--Matcher.group函式的用法

原來,group是針對()來說的,group(0)就是指的整個串,group(1) 指的是第一個括號裡的東西,group(2)指的第二個括號裡的東西。 最近學習正則表示式,發現Java中的一些術語與其他地方描述的有所差異。比如Java正則表示式中的“組”概念與《

Java表示式組group()的用法

    在Java中使用正則表示式返回符合正則表示式的字串就要用到group(),group中記錄了所有符合指定表示式的字串。本文通過一段程式碼講解如何使用group()。 public static void main(String[] args) { Patt

Java表示式Pattern和Matcher的一般用法

一.方法說明: find()方法是部分匹配,在部分匹配時和完全匹配時返回true,匹配不上返回false。如果該匹配的串有組還可

Java 簡單用法

leg 常用 gin 反斜杠 private htm code regexp val 正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它 用以描述在查找文字主體時待匹配的一個或多個字符串。正

java表示式學習筆記

本人在開發中使用正則表達的場景並不多,偶爾用一下,學習一波,時間久了就又忘記了,放到部落格中,說不定什麼時候就用到了。   一.正則表示式的語法 這個語法表來自:http://www.runoob.com/java/java-regular-expressions.html

JAVA表示式區分IPv4和IPv6地址

PS*程式碼直接見第二部分: 一、進入正題前先說說JAVA正則表示式相關概念: 1、常用字元類: [abc] == a||b||c   [a-zA-Z] == 所有大小寫字母中的任意一個      [0-9A-Za-z] == 任意

Java表示式過濾、替換,將一段文字中的英語單詞分別提取出,並統計詞頻,按詞頻排序。

最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思

java表示式去除html中所有的標籤和特殊HTML字元

關於java正則表示式去除html中所有的標籤和特殊HTML字元,結合我所做的專案總結的經驗: 總共分為三種:第一種適用於適用短的文章,將文章用正則表示式的方式拼接到程式碼中,有些繁瑣,其實不太實用。第二種就是直接將文件引入,進行更改,但是有一個小缺點,就是文件中的格式可能是utf-8格式的

Java表示式實現港、澳、臺身份證驗證

最近由於業務的要求,需要進行港、澳、臺人員身份證驗證,現在直接上程式碼,經供參考學習,也為自己積累一些工具類: package com.qiu.validate; public class regexValidateCard { public String validateIdCard10(String id

JAVA表示式初探

今天有一個需求 ,提上來類似 123#223#2 這樣的字串,要把裡面的數字匹配出來,就看了一下java的正則 以前一直用python處理正則,相比之下java的正則功能是弱了一點 public static void main(String[] args) { Pat

20180716-Java表示式

import java.util.regex.Matcher;import java.util.regex.Pattern; public class RegexMatches{ public static void main(String[] args){ //按指定模式在字串查詢 String line

java表示式的使用:6位數字

public static void main(String[] args) { Pattern pattern = Pattern.compile("\\d{6}"); boolean matches = pattern.matcher("a21109").matches(); S

Java——表示式

正則表示式定義了字串的模式。 正則表示式可以用來搜尋、編輯或處理文字。 正則表示式並不僅限於某一種語言,但是在每種語言中有細微的差別。 java.util.regex 包主要包括以下三個類: Pattern 類: pattern 物件是一個正則表示式的編譯表示。Pattern

java表示式校驗

Pattern pattern = Pattern.compile("\\d+\\.\\d+$|-\\d+\\.\\d+$");//判斷是否為小數 Pattern pattern1 = Pattern.compile("^\\d+$|-\\d+$"); if (pattern.match

Java表示式匹配日期及基本使用

廢話不多說,直接上程式碼: package top.yangxianyang.test; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; public

Java表示式學習與記錄

轉載自:http://www.runoob.com/java/java-regular-expressions.html 正則表示式定義了字串的模式,用於搜尋、編輯或處理文字。 1、正則表示式中字元意義: \            將下一字元標

Java表示式應用小結

 案例: Pattern p = Pattern.compile("a*b"); // 生成Pattern例項(設定匹配模式【規則】)- 靜態方法 Matcher m = p.matcher("aaaaab");    // 生成Match例項(

java 表示式 複習

正則表示式在日常開發中會經常的接觸到,學會了正則可以更有效的對字元進行驗證、拆分、替換、判斷字串是否合法等操作。。。 常用語法: 字元的取值範圍 1.[abc] : 表示可能是a,可能是b,也可能是c。 2.[^abc]: 表示不是a,b,c中的任意一個 3.[a-zA-Z]: 表示