Regex 从字符串末尾删除最后一个不同的K字符

Regex 从字符串末尾删除最后一个不同的K字符,regex,perl,Regex,Perl,如何删除每个字符串末尾的G s,并捕获其左侧的字符串 …tggg …ctgagggg …acaggggg …caaacagggggggg 结果是这样的。如果可能,我想在正则表达式中捕获剩余的字符串 …TGT …CTGA …ACA …CAAACA 谢谢。删除拖尾Gs很容易 s/G*$// 如果不一定是G,则可以将其与捕获组匹配 s/(.)\1*$// 如果只想在字符结尾重复时删除该字符(因此ATCG将保持不变,但atcgg将发生变化),可以使用+ s/(.)\1+$// 感谢您的解决方案。这

如何删除每个字符串末尾的G s,并捕获其左侧的字符串
…tggg
…ctgagggg
…acaggggg
…caaacagggggggg

结果是这样的。如果可能,我想在正则表达式中捕获剩余的字符串
…TGT
…CTGA
…ACA
…CAAACA

谢谢。

删除拖尾
G
s很容易

s/G*$//
如果不一定是
G
,则可以将其与捕获组匹配

s/(.)\1*$//
如果只想在字符结尾重复时删除该字符(因此
ATCG
将保持不变,但
atcgg
将发生变化),可以使用
+

s/(.)\1+$//

感谢您的解决方案。这样做有缺点吗。它似乎给出了同样的结果。是[ATGC]*?在我看到你的答案之前,我一直很难弄明白的部分。那将非常有效
m//
不会修改原始字符串,而
s//
实际上会在适当的位置更改字符串,因此这取决于您想要从中得到什么。