Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式与行开始不匹配_Python_Regex - Fatal编程技术网

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,但其行为方式仍然相同。您需要将它们组合起来,替换将不起作用,因为您需要点来匹配其他换行符。