Регулярное выражение для разделенных запятой подстроки ПерестановкиРегулярное выражение для разделенных запятыми
Привет,
Я хотел бы определить регулярное выражение, которое соответствует последовательности, состоящие из двух суб-строк, разделенных одной запятая. Каждая подстрока может быть пустой и состоит исключительно и без повторения символов «A», «G», «C» и «T». Таким образом, шаблон должен соответствовать такие строки, как:
A, G
AG, CT
TC, CA < - правильно, 1 и 2 подстроки могут иметь символы в общей (до тех пор, как они не повторяется в подстроке).
GAT, CGA
CGAT, TG < - правильные подстроки могут иметь разную длину.
и т.д ...
и не должны совпадать:
, G < - отсутствует первый подстроки
ACGT < - недостающую запятую
X, A < - неправильный символ X
А.А., G < - повторение символа A в 1-й подстроке
AC, GGC < - повторение символа G во второй подстроке
ATGA, TGG- повторение в обоих подстроки
ATCXG, AAC < - неправильный символ X и повторение в 2 подстроки
и т.д ...
До сих пор у меня есть:
/^(?=[ACGT]{1,4},[ACGT]{1,4}$)(?!.*(.).*\1.*,)(?!,.*(.).*\1).*$/
/^(?=[ACGT]{1,4},[ACGT]{1,4}$)(?!.*(.).*\g{1}.*,)(?!,.*(.).*\g{1}).*$/
также пытался присоединение группы захвата с
/^(?=[ACGT]{1,4},[ACGT]{1,4}$)(?!.*(.).*\g{1}.*,.*(.).*\g{2}).*$/
Теперь, (?=[ACGT]{1,4},[ACGT]{1,4}$)
, похоже, соответствует «две подстроки, разделенные одной запятой "и" состоит исключительно из символов «A», «G», «C» и «T» через строку; (?!.*(.).*\1.*,)
, похоже, соответствует «без повторения» до запятой.
Однако (?!,.*(.).*\1)
похоже, что он не соответствует повторному символу после запятой.
Я очень благодарен за ответы с подсказками и/или шаблонами, которые помогут с желаемым соответствием.
Использование Perl v5.18.2
Спасибо заранее
Роберт
Это дало мне что-то интересное, чтобы попытаться использовать названные группы захвата. Спасибо, Роберт! Я надеюсь, что один из наших ответов хорошо подходит для вашей настройки :) StackOverflow - отличное место, чтобы получить помощь и рекомендации Regex! Могу ли я спросить, какие функции необходимы для этого? Мне интересно, в каком контексте можно использовать это распознавание образов. –