我有一个看起来像这样的字符串:
a = '\x02 ciao \n\x0b sdjfip \n\x03 dsfd\ \x02 bella fasfs \n\x0b\x03\n'
我的目标是提取\x02
和x0b
中包含的子字符串:
ciao \n
bella fasfs \n
输出子字符串应存储在列表中。
到目前为止,我尝试使用以下代码行
import re
result = re.search('\x02(.*?)\x0b', a)
但变量result
为空。
为了得到结果,我该怎么做?
注意:a
实际上是一个通用字符串,因此它可能包含多于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
是特殊字符,默认情况下它不包含在搜索模式中的.
。