我有一个包含一些数据的文本文件:
...
DATA_ARRAY Some[] =
{
...
};
我有一个像这样的python 2.7正则表达式:
regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.DOTALL)
regmatch = re.search(regx, data)
print regmatch.group(0)
问题是正则表达式与任何内容都不匹配(regmatch为None)。如果我删除^然后它匹配就好了。
我在这里做错了什么?我想添加一行开始搜索符号。
答案 0 :(得分:5)
modifier ^
强制你的正则表达式引擎匹配字符串开头的正则表达式。由于您的字符串不以DATA_ARRAY
开头,因此会返回None
。
正如@nanny所提到的如果你也希望它匹配每一行的开头,请使用re.MULTILINE
标志:
regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.DOTALL|re.MULTILINE)
答案 1 :(得分:2)
如果你添加re.MULTILINE
标志,它应该有用。
这会使标志看起来像re.MULTILINE|re.DOTALL
答案 2 :(得分:1)
^
检查字符串的开头..添加re.MULTILINE
标志。
regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.MULTILINE|re.DOTALL)