2011-08-18 37 views
5

Tôi có mã này, nhưng nó có vẻ không hoạt động.Java Regex không khớp?

Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); 
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
System.out.println(matcher.matches()); 

Có ai biết tại sao không?

+0

Không có gì sai với regex chính nó là. Nó hoạt động khi tôi thử nghiệm nó với [RegexBuddy] (http://www.regexbuddy.com/). –

+1

Tôi biết điều đó. Tôi biết regex đủ để biết nó sẽ làm việc. Và RegexBuddy - 40 đô la! Điên! Tôi chỉ dính vào http://gskinner.com/RegExr/ – Isaac

Trả lời

8

Matcher#matches() phương pháp thử khớp với toàn bộ chuỗi đầu vào toàn bộ chuỗi đầu vào đối với mẫu.

Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*$"); //true 
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); //false 
+0

Mmm, không biết nó khớp với toàn bộ chuỗi, cảm ơn. – Isaac

1

Giả sử mục tiêu của bạn là để trích xuất các IMGURSESSION:

import java.util.regex.*; 

Pattern pattern = Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*"); 
Matcher matcher = pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
if (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

Chỉ cần chắc chắn rằng bạn đặt trong một trận đấu tất cả các mẫu ở cuối để đáp ứng các "khớp" ngữ nghĩa.

Các vấn đề liên quan