【发布时间】:2019-11-27 12:18:08
【问题描述】:
我正在尝试构建一个正则表达式,使我能够替换两个特定字符串之间多行上的最后一个逗号。
示例文本:
BEGIN_MESSAGE_MAP(SomeForm, BaseForm)
ON_COMMAND(CID_ButtonAction, OnButtonAction)
ON_NOTIFY_EX(CID_Notify, 0, OnNotify)
END_MESSAGE_MAP()
期望的输出:
BEGIN_MESSAGE_MAP(SomeForm, BaseForm)
ON_COMMAND(CID_ButtonAction, &ThisClass::OnButtonAction)
ON_NOTIFY_EX(CID_Notify, 0, &ThisClass::OnNotify)
END_MESSAGE_MAP()
替换一行的最后一个逗号很简单:
找到(,)([^,]*?)$
并替换为(?1,&ThisClass\:\:\2)。
我还能够构建一个匹配 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间所有内容的正则表达式。
(?<=BEGIN_MESSAGE_MAP)(.*\R)*(?=END_MESSAGE_MAP)
问题是 - 我如何将这两个放在一起,以便我只能在这两个字符串之间进行替换?
【问题讨论】:
-
PCRE,很抱歉省略了,添加了一个标签。