【发布时间】:2015-01-12 01:51:54
【问题描述】:
我正在尝试构建一个正则表达式来验证可以包含以下格式的宏的文本:
Some text (*MacroIDInsert*) some text continues..
我想检测宏不存在的情况
- 正确关闭(例如“(*”而不关闭“*)”)
- 正确打开(例如“*)”而不打开“(*”)
我想检测的无效案例示例:
Some text (* Invalid Macro Insert some text (*ValidMacroInsert*)
或
Some text Invalid Macro Insert *) some text (*ValidMacroInsert*)
我想匹配缺少随附括号的(* 或 *)。并可能相应地用 替换“坏”的,例如:
Some text Invalid Macro Insert > some text (*ValidMacroInsert*)
使用正则表达式可以实现吗?
更新: 进一步澄清表明,文本可能包含 嵌套 宏,例如:
Some text (*MacroID1(*MacroID2*)*) some text continues..
在这种情况下,我的理解是无法判断要替换哪个“无效”括号... 例如,考虑以下结构:
(*id1*) (*id2*) (* (*id3*) (* id5 (*id4*) *)
^^? ^^?
在这种情况下,我们不知道(上面)标记的两个括号中的哪一个是不正确的......
【问题讨论】:
-
您使用的是哪种语言?
标签: regex parsing macros escaping text-parsing