选择字符\ x02和\ x0b之间的子字符串

时间:2017-01-11 14:39:33

标签: python

我有一个看起来像这样的字符串:

a = '\x02 ciao \n\x0b sdjfip \n\x03 dsfd\ \x02 bella fasfs \n\x0b\x03\n'

我的目标是提取\x02x0b中包含的子字符串:

  • ciao \n
  • bella fasfs \n

输出子字符串应存储在列表中。

到目前为止,我尝试使用以下代码行

import re
result = re.search('\x02(.*?)\x0b', a)

但变量result为空。

为了得到结果,我该怎么做?

注意:a实际上是一个通用字符串,因此它可能包含多于2个感兴趣的子字符串。

2 个答案:

答案 0 :(得分:3)

问题是换行符,而不是其他字符。启用re.DOTALL以匹配换行符:

  

如果指定了DOTALL标志,则匹配包括换行符在内的任何字符。

此外,要查找所有字符串(不仅是您感兴趣的第一个匹配对象),请不要使用re.search,而是使用re.findall

result = re.findall('\x02(.*?)\x0b', a,re.DOTALL)

输出:

[' ciao \n', ' bella fasfs \n']

答案 1 :(得分:2)

您可以使用以下语法:

re.findall("\\x02(.*?)\\x0b", a, re.I | re.M | re.S)

你得到空集,因为\n是特殊字符,默认情况下它不包含在搜索模式中的.