Chcę wygenerować wyrażenie regularne z ciągu zawierającego liczby, a następnie użyć go jako wzorca do wyszukiwania podobnych ciągów. Przykład:generowanie wyrażenia regularnego z ciągu znaków
String s = "Page 3 of 23"
Jeśli zastąpić wszystkie cyfry \d
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
sb.append("\\d"); // backslash d
} else {
sb.append(c);
}
}
Pattern numberPattern = Pattern.compile(sb.toString());
// Pattern numberPattern = Pattern.compile("Page \d of \d\d");
I można wykorzystać, aby dopasować podobne łańcuchy (np "Page 7 of 47"
). Mój problem polega na tym, że jeśli zrobię to naiwnie, niektóre metaznaki, takie jak (){}-
itp., Nie zostaną usunięte. Czy istnieje biblioteka do tego lub wyczerpujący zestaw znaków dla wyrażeń regularnych, których muszę i nie wolno mi uciec? (Mogę spróbować wyodrębnić je z Javadocs, ale martwię się, że czegoś brakuje).
Alternatywnie istnieje biblioteka, która już to robi (na tym etapie nie chcę używać pełnego rozwiązania do przetwarzania języka naturalnego).
UWAGA: Edytowana odpowiedź @ dasblinkenlight działa teraz dla mnie!
Oto odpowiedź na pytanie, które znaki pytanie, nie jestem świadomy żadnych bibliotek do generowania wyrażeń regularnych: http://stackoverflow.com/questions/399078/what-special-characters-must-be-escaped-in -regularne wyrażenia –
@Evan dzięki. Interesuje mnie tylko Java, więc wygląda jak przydatny zasób. –