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 に答える