Я использую сопоставление Regex для приблизительного сопоставления строк.У меня есть вопрос относительно того, как сделать так, чтобы это позволяло перекрывать совпадения.В настоящее время он находит совпадение, затем пропускает его до конца и начинает поиск.
Текущий код
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class BNDM2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String nucleotides,pattern;
System.out.print("Enter sequence:");
pattern = sc.nextLine();
System.out.print("Enter nucleotides:");
nucleotides= sc.nextLine();
// first convert the pattern into a proper regex
// i.e. replacing any N with [ATCG]
Pattern regex = Pattern.compile(pattern.replaceAll("N", "[ATCG]"));
// create a Matcher to find everywhere that the pattern matches
Matcher m = regex.matcher(nucleotides);
// find all the matches
while (m.find()) {
System.out.println("Match found:");
System.out.println("start:" + m.start());
System.out.println("end:" + (m.end() - 1)); // minus 1 here because the end of a regex match is always off by 1
System.out.println();
System.out.println("|" + nucleotides.substring(m.start(),m.end())+"|......");
}
}
}