0
正規表現を使用して、最大1文字の配列が見つからないようにしようとしています。たとえば、パターン "nan"とテキスト "banana"は、 "ban"と "nan"を検索したいと思います。前者は '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のような従来のアルゴリズムを変更しようとするとよいでしょうか?