Я пытаюсь использовать регулярное выражение (которое я только начинаю с), чтобы найти последовательности с 1 несоответствующим символом. Например, образец «нан» и текст «банан» я бы хотел найти «запрет» и «нан», первый был приемлемым с несоответствием «b» и «n». Проблема, с которой я сталкиваюсь, состоит в создании шаблона регулярных выражений, не прибегая к созданию отдельных подстановочных вставок, где я хочу их.Поиск строк с помощью Regex
final String[] patterns = {"[a-z]an", "n[a-z]n", "na[a-z]"};
final String text = "banana";
for(String pattern : patterns)
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
while(m.find())
{
System.out.println(m.start() + " " + m.group());
}
}
Это то, что у меня есть как тест, который является своего рода неуклюжим способом получить то, что я хочу (хотя и с некоторыми дублей). Для такого рода поиска строк с помощью одного несоответствия регулярное выражение является эффективным средством или я должен попробовать изменить традиционные алгоритмы, такие как Horspool или KMP?