我有基因序列,可以在其中包含实际的字符串文本,我想用regex删除。我想尝试用regex通用的方式删除错误的文本。我想删除所有字符最多10个字符之间的任何无效字符。我假设无效字符之间的任何内容最多间隔10个字符都是无效文本的一部分。
例子:
BADTEXTATTHEBEGINNINGATCATCGGCCCATGCATMOREBADTEXTINTHEMIDDLEGCGGGGATCGCCCCTTTAAAATHISISSOMETEXTATTHEENDIWANTREMOVED有效的序列字符是ATCG。我们可以创建一个正则表达式来将上面的字符串简化为GATCATCGGCCCATGCATGCGGGGATCGCCCCTTTAAAAT吗?我知道G在这个最后的序列的开头是单词开始的最后一个字符,这是字符串开头的“坏”文本。我意识到用正则表达式是不可能识别单词的,所以我愿意接受这个限制。在结尾的T也是一样,这是"THIS“的第一个字母。
我试着用重复的捕获组做一些事情,允许在坏角色之间设置一定数量的字符,但我似乎无法使它正常工作。也许有人能帮我..。这个正则表达式并不能很好地捕捉所有的东西。
([^ACTG].{1,10}[^ACTG])+ 发布于 2022-08-12 22:13:33
初始字符串:
BADTEXTATTHEBEGINNINGATCATCGGCCCATGCATMOREBADTEXTINTHEMIDDLEGCGGGGATCGCCCCTTTAAAATHISISSOMETEXTATTHEENDIWANTREMOVED替换非ACGT后的字符串:
-A-T--TATT----G-----GATCATCGGCCCATGCAT-----A-T--T--T--------GCGGGGATCGCCCCTTTAAAAT---------T--TATT-------A-T-------对于此示例,最多4个ACGT字符的运行可以出现在不需要的文本中。检查其他样本可能会给出一个合理的上限。
也许“以无效字符开头和结尾,且不包含有效字符的长时间运行”是不是比"1到10个字符,以无效字符开头和结尾“更好的衡量标准?
这方面的准则是:
[^ACGT]((?![ACGT]{5,}).)*[^ACGT]和火柴:
BADTEXTATTHEBEGINNIN
MOREBADTEXTINTHEMIDDLE
HISISSOMETEXTATTHEENDIWANTREMOVEDhttps://stackoverflow.com/questions/73338981
复制相似问题