Я пишу программу Java, которая ищет последовательность ДНК по 15 символов за раз, нахожу разделы с наибольшим количеством вхождений C и G. Я полагал, что это будет чтобы проверить всю последовательность ДНК для любых областей, где подстрока 15 состоит полностью из C и G, а если они не существуют, поиск подстрок с 14 C и G и 1 A или T. Тогда, если это не приходят, 13 CG и 2 AT и т. д.RegEx на строку для соответствия И соответствие НЕЗАВИСИМОСТЬ порядка
Попытка найти решение для этого регулярного выражения оказалось для меня трудной задачей. Я придумал тестовый пример, используя этот код, но я не могу заставить RegEx работать. Я думаю, что синтаксис может быть неправильным, я никогда не использовал RegExes в Java. Извините за это, я могу, возможно, выяснить синтаксис, мне просто нужна помощь с правильным выражением, которое соответствует правильной вещи.
public class DNAChecker{
public static void main(String []args){
String checkThis= "ggccggccaggccgg";
if (checkThis.matches(“(?=.*[CcGg]{14})(?=.*[AaTt]{1})”)) {
System.out.println("This program works.");
} else {
System.out.println("This program doesn't work.");
}
}
}
Я так понимаю, это и от того, что я видел в соответствующих потоков, если это может быть сделано с помощью регулярных выражений, я получаю по крайней мере близко с этим. Теперь, когда я думаю об этом, я не думаю, что это гарантирует, что общее совпадение составляет 15 символов ... т. Е. Если checkThis был длиной более 15 символов и имел 14 CG и 1 AT total, последовательно это все равно будет правдой. Таким образом, xxxxggccggxxccaggccggxxxxxx будет правдой. Будет ли использовать .contains вместо .matches гарантировать ограничения длины?
Как бы то ни было, если бы однострочный регрессивный регрессивный регистр выглядел быстрее, чем подсчет C и G каждой подстроки? Я еще не взял класс алгоритмов.
Обратите внимание, что эта программа в ее окончательной форме будет принимать строку переменной длины и искать подстроки длиной n, а не 15 каждый раз. (Я знаю, как справиться с этими требованиями, поэтому не нужно рассказывать мне о Scanner или о том, как работают аргументы!) Я просто RegEx noob, пытающийся использовать материал RegEx на уровне Jedi ... если бы вы могли порекомендовать мне книгу чтобы стать волшебником RegExes, тоже было бы радикальным. Большое спасибо за ваши ответы!
Боюсь, что Regex, вероятно, не будет слишком полезен для вас для этой проблемы. Я бы порекомендовал просто подсчитывать количество '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' 'вместо –
Что касается информации/учебников по регулярным выражениям, попробуйте этот сайт: [regular-expressions.info] (http: // regular- expressions.info) – Thomas
И [Частые вопросы регулярных выражений переполнения стека] (http://stackoverflow.com/a/22944075/2736496)! – aliteralmind