Python正则表达式与行开始不匹配
我有一个包含一些数据的文本文件:Python正则表达式与行开始不匹配,python,regex,Python,Regex,我有一个包含一些数据的文本文件: ... 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)。如果删除“^”,则它匹配得很好 我在这里做错了什么
...
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)。如果删除“^”,则它匹配得很好
我在这里做错了什么?我想添加行首搜索符号。强制您的正则表达式引擎从字符串开始匹配正则表达式。由于字符串不是以DATA\u ARRAY
开头,因此它返回None
正如@nanny提到的,如果您还希望它与每行的开头匹配,请使用re.MULTILINE
标志:
regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.DOTALL|re.MULTILINE)
如果您添加一个
re.MULTILINE
标志,它应该可以工作
这将使标志看起来像是检查字符串的开头。。添加
re.MULTILINE
标志
regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.MULTILINE|re.DOTALL)
的确如果还希望它匹配每行的开头,请使用
re.MULTILINE
:此答案正确,^
匹配字符串的开头,或者在设置了re.MULTILINE
的情况下匹配行的开头。因此,根据DATA\u ARRAY
是否始终位于字符串中新行的开头,您需要从模式中删除插入符号或添加re.MULTILINE
参数。我实际上尝试将re.DOTALL更改为re.MULTILINE,但其行为方式仍然相同。您需要将它们组合起来,替换将不起作用,因为您需要点来匹配其他换行符。