Należy przeanalizować swoją wyszukiwarki ciąg w celu zmiany kropkę .
w regex kropką: \\.
. Zauważ, że a single dot is a metacharacter in Regular Expressions i oznacza dowolny znak. Na przykład, można wymienić wszystkie kropki w swojej String dla \\.
Jeśli nie chcesz, aby zrobić wszystko, pracę, a potem po prostu wysłać java\\.
jako ciągu wyszukiwania
Więcej informacji:
Kod:
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());
}
}
Byłoby wydrukować: 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());
}
}
Byłoby wydrukować: 17 java.
(zwróć uwagę na kropkę na końcu)
EDIT: Jak bardzo prosty rozwiązanie, ponieważ jedynym problemem, jaki masz, jest kropka, możesz zastąpić wszystkie kropki w ciągu znaków wartością \\.
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());
}
}
Czyli mówisz, że jeśli twój ciąg wyszukiwania to "Java", chcesz, aby znalazł "Java."? Inne wyjaśnienia pomogłyby nam rozwiązać twój problem. – Default
Przekonwertowałem swój komentarz do odpowiedzi. –
Jeśli szukasz literału, użyj po prostu ['String # indexOf (String)'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html# indexOf (java.lang.String)), wyrażeń regularnych tylko dodać komplikacji. – maerics