[搬家文]java的regex.Matcher 使用一例(group()方法用法)

來源:互聯網
上載者:User

關於pattern,matcher的各個函數有javadoc沒啥好說的。

不過還是有一點需要強調強調,第一是這個group,其實有groupCount+1組

group(0)對應的是整個Regex匹配部分,group(1)~group(groupCount)則是小括弧內匹配部分。

而且這個分組的對象,是一次find以後,Regex匹配到的那一段字串

比如一個String ,(s1)xxx(s2)有s1,s2兩部分符合要求,那麼一次find以後,所有group都是在S1內部的

第二次find後,所有group都是在S2內部的內容

 

 1 import java.util.regex.Matcher;
 2 import java.util.regex.Pattern;
 3 
 4 public class RegexTest {
 5 
 6 public static void printMatched(String regex, String source) {
 7    Pattern p = Pattern.compile(regex);
 8    Matcher m = p.matcher(source);
 9    while (m.find()) {
10     for (int i = 0; i <= m.groupCount(); i++) {
11      System.out.println(m.group(i));
12     }
13    }
14 }
15 
16 public static void main(String[] arg) {
17    RegexTest.printMatched("<(\\w+)>.*</(\\1)>",
18      "<table><td>sdjfjfiweif</td></table><cd>sdfsdf</cd>");
19 
20 }
21 }
22 

 

[2008-8-13補充]java中String有replace,replaceAll兩個方法,其實都是對所有匹配項進行替換。只是replaceAll支援Regex。

很多人拿replaceAll當replace用,出問題了還不知道怎麼回事。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.