Hallo,
ich brauche etwas Unterstützung bei einem RegEx.
Ziel ist einen Text auf einen Substring zu überprüfen, und wenn dieser Substring vorkommt, soll das Wort als ganzes zurückgegeben werden.
Text kann alles sein, Doku, Quellcode, Konfigurationsdatein. Daraus kann kein Muster erschlossen werden. Das extrahierte Wort soll ohne Sonderzeichen und aus dem deutschem Alphabet (mit Umlaut und ß) bestehen.
Der bisherige RegEx scheint nicht so ganz zu funktionieren.
Auskommentiert ist die erwartete Lösung und unten der tatsächliche Output.
Wie man erkennt machen oft die Umlaute Probleme, aber auch nicht immer. "seiner" und "useiwsaö" werden gar nicht gefunden.
ich brauche etwas Unterstützung bei einem RegEx.
Ziel ist einen Text auf einen Substring zu überprüfen, und wenn dieser Substring vorkommt, soll das Wort als ganzes zurückgegeben werden.
Text kann alles sein, Doku, Quellcode, Konfigurationsdatein. Daraus kann kein Muster erschlossen werden. Das extrahierte Wort soll ohne Sonderzeichen und aus dem deutschem Alphabet (mit Umlaut und ß) bestehen.
Der bisherige RegEx scheint nicht so ganz zu funktionieren.
Auskommentiert ist die erwartete Lösung und unten der tatsächliche Output.
Wie man erkennt machen oft die Umlaute Probleme, aber auch nicht immer. "seiner" und "useiwsaö" werden gar nicht gefunden.
Java:
public class Renamer {
public static void main(String[] args) {
String text = "Das soll so sein.\"seinetwegü&en so <äzuse-123 <AeDwertse! ?seiner_ .seiöner_ ID_useiwsaö_ps -gfserTßz-";
// sein
// seinetwegü&en
// äzuse
// AeDwertse
// seiner
// seiöner
// useiwsaö
// gfserTßz
String substring = "se";
List<String> matchingWords = findWordsContainingSubstring(text, substring);
for (String word : matchingWords) {
System.out.println(word);
}
}
public static List<String> findWordsContainingSubstring(String text, String substring) {
String regex = "\\b[a-zA-ZäöüÄÖÜß]*" + Pattern.quote(substring) + "[a-zA-ZäöüÄÖÜß]*\\b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
List<String> matchingWords = new ArrayList<>();
while (matcher.find()) {
matchingWords.add(matcher.group());
}
return matchingWords;
}
}
Code:
sein
seinetweg
zuse
AeDwertse
seiö
gfserTßz