猿问

具有最大限额的可选字符的正则表达式-python

我对正则表达式非常陌生,手头有一个问题,我需要以允许“A”或“G”发生但不能同时发生的方式开发一种模式。

我写了这个模式:r'ACC[A]?[G]?CCG'

“A”和“G”是可选的,但我想如果发生“A”,则停用 [G]?反之亦然,这样他们就不会相继出现。

解决这个问题的最佳方法是什么?


白衣染霜花
浏览 115回答 5
5回答

MMMHUHU

使用替代方案r'ACC(A|G)?CCG'使用字符类r'ACC[AG]?CCG'

至尊宝的传说

这?if "A" in myString:  myString.replace("G", "")或这个?A = FalseG = Falsefor each in myString:  if each == "A":    if not A:      temp += each    A = True  elif each == "G":    if not G:      temp += each    G = True        else:    temp += eachmyString = temp

慕的地8271018

要匹配 A 或 G 但不能同时匹配两者,您可以使用字符类并省略使用? {1}and|ACC[AG]CCG正则表达式演示更新后的代码可能看起来是r'ACC[AG]CCG'

Helenr

我假设您的意思是您不希望“A”或“G”在一起,而不是“A”或“T”,这意味着您希望您的模式匹配 或 ,ACCACCG但ACCGCCG不匹配ACCAGCCG,这是正确的吗?如果是这样,这种方法应该有效:re.search(r"ACC[A|G]?CCG", text)

侃侃尔雅

r'ACC[A|G]?CCG'A 或 G 匹配零次或一次测试正则表达式的一个好网站是https://regex101.com/,其中包含一个解释其工作原理的部分以及正则表达式的快速参考
随时随地看视频慕课网APP

相关分类

Python
我要回答