Bạn nên phân tích cú pháp của mình chuỗi tìm kiếm để thay đổi dấu chấm .
thành dấu chấm RegEx: \\.
. Lưu ý rằng a single dot is a metacharacter in Regular Expressions và có nghĩa là bất kỳ ký tự nào. Ví dụ, bạn có thể thay thế tất cả các dấu chấm trong chuỗi của bạn cho \\.
Nếu bạn không muốn làm tất cả những gì công việc, sau đó chỉ cần gửi java\\.
như chuỗi tìm kiếm bạn
Thông tin thêm:
Mã dụ:
public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java";
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent);
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}
Nó sẽ in: 17 java
public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java\\.";
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent);
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}
Nó sẽ in: 17 java.
(chú ý dấu chấm cuối cùng)
EDIT: Là một rất cơ bản giải pháp, vì vấn đề duy nhất bạn có là dấu chấm, bạn có thể thay thế tất cả các dấu chấm trong chuỗi của mình bằng \\.
public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java.";
//this will do the trick even if the "searchString" doesn't contain a dot inside
searchString = searchString.replaceAll("\\.", "\\.");
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent);
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}
Nguồn
2013-02-19 22:01:33
Vì vậy, bạn có nói rằng nếu Chuỗi tìm kiếm của bạn là "Java", bạn muốn tìm kiếm "Java"? Một số giải thích rõ hơn sẽ giúp chúng tôi giải quyết vấn đề của bạn. – Default
Tôi đã chuyển nhận xét của mình thành câu trả lời. –
Nếu bạn đang tìm kiếm một chuỗi chữ thì chỉ cần sử dụng ['String # indexOf (String)'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html# indexOf (java.lang.String)), các biểu thức thông thường sẽ chỉ thêm biến chứng. – maerics