使用python找出多行模式的正则表达式

时间:2016-12-22 11:37:19

标签: python regex

我有一个文件,我试图匹配一个模式,并用其他字符串替换它,但匹配的行太大,发生在多行;因此我的模式匹配第一行并仅替换该行。

示例 -

m_pMainSceneManager->PushScene<ConfigurationSpecificHelpScreens>(MainScreenPriority::HelpScreens, &m_ContextTable
            , L"HelpScreens.mercury");

这是两行 - 直到上下文表(&m_ContextTable)在一行中 , L"HelpScreens.mercury");在另一行。

有这么多正则表达式我也试过这个正则表达式 -

cpat = re.compile(r'.*m_pMainSceneManager->PushScene<ConfigurationSpecificHelpScreens>\(.*\n.*\)')

我上面用re.MULTILINE尝试了,但没有。{但没有运气。

1 个答案:

答案 0 :(得分:1)

您可能应该使用flags=re.DOTALL。在此处详细了解re.compilehttps://docs.python.org/2/library/re.htmlre.DOTALL表示搜索包含换行符。

>>> import re  
>>> print(re.match('.', '\n'))
None
>>> print(re.match('.', '\n', flags=re.DOTALL))
<_sre.SRE_Match object at 0x02B848E0>

在您的特定情况下,您可以使用此:

>>> s = '''m_pMainSceneManager->PushScene<ConfigurationSpecificHelpScreens>(MainScreenPriority::HelpScreens, &m_ContextTable
...             , L"HelpScreens.mercury");'''
>>> s
'm_pMainSceneManager->PushScene<ConfigurationSpecificHelpScreens>(MainScreenPriority::HelpScreens, &m_ContextTable\n            ,  L"HelpScreens.mercury");'
>>> pattern = re.compile(r'm_pMainSceneManager->PushScene<ConfigurationSpecificHelpScreens>\(.*?\)', flags=re.DOTALL)
>>> pattern.match(s)
<_sre.SRE_Match object at 0x02DE2AA0>