如何在标签内的标签上使用正则表达式
本文关键字:标签 正则表达式 | 更新日期: 2023-09-27 18:12:16
我现在正在写一个小项目,使用正则表达式来解析模板,现在最大的问题是我们在这里也有一个"标签",这使得它有点困难。
Regex reg = new Regex(@"##############TEMPLATEENGINE(^#)##############(.*?)##############TEMPLATEENGINE('1)##############", RegexOptions.IgnoreCase | RegexOptions.Compiled);
在
这样的模板上工作得很好# # # # # # # # TEMPLATEENGINE startswith美元美元账户:firstname倘若美元美元 ##############等等# # # # # # # # TEMPLATEENGINE startswith美元美元账户:firstname倘若美元美元########TEMPLATEENGINEaccount:firstname##############属性缺失:firstname !############## TEMPLATEENGINEaccount: firstname
但是一旦我有了像
这样的模板# # # # # # # # TEMPLATEENGINE startswith美元美元账户:firstname倘若美元美元 ##############等等########TEMPLATEENGINEaccount:firstname##############属性缺失:firstname !############## TEMPLATEENGINEaccount: firstname# # # # # # # # TEMPLATEENGINE startswith美元美元账户:firstname倘若美元美元 ##############
blahg
它只找到内部模板,尽管我认为'1应该确保开始和结束应该相等....
我试着让这个模式工作:
########TEMPLATEENGINE([^#]+)##############(((?!########TEMPLATEENGINE(?!'1)).)*)########TEMPLATEENGINE'1##############
但是到目前为止还没有运气,我需要继续前进——我已经把它贴出来了,以防它有帮助,因为我认为这个技术是合理的。如果没有人使用它,我会稍后删除它(或者修复它,如果可以的话!),所以请不要投票否决-我并没有声称这是一个完整的解决方案!
注意,您需要迭代匹配表达式,首先捕获内部标记。
还要注意,结束标签########TEMPLATEENGINEaccount:firstname##############似乎是在一个不同的格式的例子(缺少它的#后缀)-这是一个问题吗?