2013-05-02 42 views
6

regex Sau đem lại cho tôi java.lang.IllegalStateException: No match found lỗiJava RegEx không phù hợp tìm thấy lỗi

String requestpattern = "^[A-Za-z]+ \\/+(\\w+)"; 
Pattern p = Pattern.compile(requestpattern); 
Matcher matcher = p.matcher(requeststring); 
return matcher.group(1); 

nơi yêu cầu chuỗi là

POST //upload/sendData.htm HTTP/1.1 

Bất kỳ trợ giúp sẽ được đánh giá cao.

+0

'\ w' (từ ký tự) được' [A-Za-Z0-9_] '. Nó sẽ không khớp với "'/'", "' .' "hoặc" '/' "(tất cả đều xuất hiện sau" '//' "). – acdcjunior

+0

Tôi hy vọng nó sẽ được tải lên dưới dạng đầu ra – Ananda

+0

bản sao có thể có của ["Không tìm thấy kết quả phù hợp" khi sử dụng phương pháp nhóm của đối sánh] (http://stackoverflow.com/questions/5674268/no-match-found-when-using-matchers nhóm-phương pháp) – anotherdave

Trả lời

24

Không trận đấu đã cố gắng. Hãy gọi find() trước khi gọi group().

public static void main(String[] args) { 
    String requeststring = "POST //upload/sendData.htm HTTP/1.1"; 
    String requestpattern = "^[A-Za-z]+ \\/+(\\w+)"; 
    Pattern p = Pattern.compile(requestpattern); 
    Matcher matcher = p.matcher(requeststring); 
    System.out.println(matcher.find()); 
    System.out.println(matcher.group(1)); 
} 

Output:

true 
upload 
0

Biểu thức của bạn yêu cầu một hoặc nhiều chữ cái, theo sau là dấu cách, theo sau là một hoặc nhiều dấu gạch chéo, theo sau bởi một hoặc nhiều ký tự từ. Chuỗi kiểm tra của bạn không khớp. Ngoại lệ được kích hoạt bởi vì bạn đang cố gắng truy cập một nhóm trên một đối sánh không trả về kết quả phù hợp.

Chuỗi thử nghiệm của bạn khớp với dấu gạch chéo sau "tải lên", vì dấu gạch chéo không khớp với \w, chỉ bao gồm các ký tự từ. Ký tự từ là chữ cái, chữ số và dấu gạch dưới. Xem: http://www.regular-expressions.info/charclass.html#shorthand

+0

Tôi đang mong đợi nó để cung cấp cho tải lên như đầu ra – Ananda

2

Các Matcher#group(int) ném:

IllegalStateException - If no match has yet been attempted, or if the 
previous match operation failed. 
Các vấn đề liên quan