Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于具有最大容差的可选字符的正则表达式_Python_Regex - Fatal编程技术网

Python 用于具有最大容差的可选字符的正则表达式

Python 用于具有最大容差的可选字符的正则表达式,python,regex,Python,Regex,我对regex非常陌生,手头有一个问题,我需要开发一种模式,允许“a”或“G”发生,但不能同时发生 我已经写了这个模式:r'ACC[A]?[G]?CCG' “A”和“G”是可选的,但我希望如果出现“A”,请停用[G]?反之亦然,所以他们不会在对方之后出现 解决这个问题的最佳方法是什么?r'ACC[A | G]?CCG' A或G匹配0或1次 一个测试你的正则表达式的好网站是,它包括一个解释它如何工作的部分,以及正则表达式的快速参考 if "A" in myString: m

我对regex非常陌生,手头有一个问题,我需要开发一种模式,允许“a”或“G”发生,但不能同时发生

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

“A”和“G”是可选的,但我希望如果出现“A”,请停用[G]?反之亦然,所以他们不会在对方之后出现

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

r'ACC[A | G]?CCG'

A或G匹配0或1次

一个测试你的正则表达式的好网站是,它包括一个解释它如何工作的部分,以及正则表达式的快速参考

if "A" in myString:
  myString.replace("G", "")
还是这个

A = False
G = False

for 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 += each

myString = temp

我假设你的意思是你不想把“A”或“G”放在一起,而不是“A”或“t”,意思是你想让你的模式匹配
acccg
acccgcg
,但不匹配
acccagccg
,对吗

如果是这样,这种方法应该有效:

re.search(r“ACC[A | G]?CCG”,文本)
使用替代方案

r'ACC(A|G)?CCG'
使用字符类

r'ACC[AG]?CCG'

要匹配A或G,但不能同时匹配两者,可以使用字符类并使用
{1}
|

ACC[AG]CCG


更新后的代码看起来可能是
r'ACC[AG]CCG'

您能为问题添加示例吗?所有相关组合的输入和输出有助于回答谢谢,是的,它起作用了。我也希望至少有一个,但不是两个都有。这就完成了r'ACC[A | G]{1}?CCG'