1

所以我有这个序列,我正在尝试使用正则表达式的搜索功能来查找查询发生之前的区域和之后的区域。

这就是我所拥有的

sequence = 'abcdefghijklmnopqrstuvwxyz'
query = 'jklmnop'

这就是我想要结束的

before = 'abcdefghi'
after = 'qrstuvwxyz'

我尝试过之前的,但它不起作用。我认为这会将其分为 3 组

sequence = 'abcdefghijklmnopqrstuvwxyz'
query = 'jklmnop'
print re.search('\w+(query)\w+',sequence).group(0)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'NoneType' object has no attribute 'group'
4

1 回答 1

1

在字符串内部写入query不会存储该query字符串内部的值,它只是创建一个新字符串,其中包含字符串“查询”。

>>> print '\w+(query)\w+'
\w+(query)\w+

您应该使用字符串格式:

>>> sequence = 'abcdefghijklmnopqrstuvwxyz'
>>> query = 'jklmnop'
>>> '(\w+)({})(\w+)'.format(query)
'(\\w+)(jklmnop)(\\w+)'

>>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(1)
'abcdefghi'
>>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(3)
'qrstuvwxyz'

最好re.split用于此类目的:

>>> strs = 'abcdefghijklmnopqrstuvwxyz'
>>> import re
>>> before, after = re.split('jklmnop',strs)
>>> before
'abcdefghi'
>>> after
'qrstuvwxyz'
于 2013-06-20T19:27:43.710 回答