2012-01-20 65 views

Trả lời

118

Sử dụng Matcher:

public static void printMatches(String text, String regex) { 
    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher = pattern.matcher(text); 
    // Check all occurrences 
    while (matcher.find()) { 
     System.out.print("Start index: " + matcher.start()); 
     System.out.print(" End index: " + matcher.end()); 
     System.out.println(" Found: " + matcher.group()); 
    } 
} 
-3
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexMatches 
{ 
    public static void main(String args[]){ 

     // String to be scanned to find the pattern. 
     String line = "This order was places for QT3000! OK?"; 
     String pattern = "(.*)(\\d+)(.*)"; 

     // Create a Pattern object 
     Pattern r = Pattern.compile(pattern); 

     // Now create matcher object. 
     Matcher m = r.matcher(line); 
     if (m.find()) { 
     System.out.println("Found value: " + m.group(0)); 
     System.out.println("Found value: " + m.group(1)); 
     System.out.println("Found value: " + m.group(2)); 
     } else { 
     System.out.println("NO MATCH"); 
     } 
    } 
} 

quả

Found value: This order was places for QT3000! OK? 
Found value: This order was places for QT300 
Found value: 0 
+2

Hãy bình luận khi downvoting! @ Shadow Tôi giả định điều này đã được downvoted như nó không, như yêu cầu OP, cung cấp cho các chỉ số của trận đấu ... –

+2

Được rồi ... Tôi downvoted vì câu trả lời này không giải quyết các câu hỏi. – bdares

+1

Regex của bạn cũng bị lỗi. Đầu tiên '(. *)' Ban đầu tiêu thụ toàn bộ chuỗi, sau đó nó lùi lại đủ xa để cho '(\ d +)' khớp với một chữ số, để lại chữ thứ hai '(. *)' Để tiêu thụ bất kỳ thứ gì còn lại. Không phải là một kết quả đặc biệt hữu ích, tôi muốn nói. Oh, và bạn để lại 'nhóm (3)' ra khỏi kết quả của bạn. –

0

phiên bản đặc biệt câu trả lời từ Jean Logeart

public static int[] regExIndex(String pattern, String text, Integer fromIndex){ 
    Matcher matcher = Pattern.compile(pattern).matcher(text); 
    if ((fromIndex != null && matcher.find(fromIndex)) || matcher.find()) { 
     return new int[]{matcher.start(), matcher.end()}; 
    } 
    return new int[]{-1, -1}; 
} 
Các vấn đề liên quan