【发布时间】:2014-02-04 00:12:28
【问题描述】:
当使用正则表达式 .search() 时,我发现它只匹配字符串中第一次出现的模式,并且需要在字符串 .findall() 中找到该模式的所有重复。
所以,我的问题是:给出两个相互“对话”的不同字符串,我需要在字符串中找到特定模式的每次出现,然后获取该模式的位置并从中获取该位置的元素第一个字符串,然后打印它们或保存在新列表中。
为了更清楚,我将提供一个示例:
ACGCUGAGAGGACGAUGCGGACGUGCUUAGGACGUUCACACGGUGGAAGUUCACAACAAGCAGACGACUCGCUGAGGAUCCGAGAUUGCUCGCGAUCGG
...((.((....(((..((....(((((.((((.(((((...))))).)))).....)))))..))..))))).))((((((((....)))).))))..
这是两个字符串,第一个是字母,第二个是点和括号。我想找到的由正则表达式编译的模式是“((。+))”。一旦在第二个字符串上找到模式,然后获取模式的位置并返回第一个字符串的相关元素。有了这些输入,我希望有 2 个不同的输出:CACGG 和 GAUUGC。
到目前为止我写的代码是这样的:文件中的行:
if (line[0] == "A") or (line[0] == "C") or (line[0] == "T") or (line[0] == "G"):
apt.append(line)
count = count + 1
else:
line = line.strip()
pattern = "(\(\.+\))"
match = re.search(pattern, line)
if match:
loop.append(apt[count][match.start():match.end()])
else:
continue
这显然只检索文件第二行中出现的模式的第一个匹配项,只给出 CACGG 作为输出。
如何修改代码以检索模式的第二次出现?
谢谢,感谢您的帮助
【问题讨论】: