添加太多字符时,RegEx停止工作

时间:2014-04-18 00:02:00

标签: regex string autoit

所以我试图使用Regex(在AutoIt内部)返回icr文件(基于vCalendar [.vcs]的日历文件)中的每个事件。因此,icr文件中的事件以BEGIN:VEVENT行开头,以END:VEVENT结束。我将文件读取到变量x并用'[n'替换x中的每一个新行,因此RegEx看起来像(BEGIN:VEVENT\[n(?:\[n|[^\[]+)+END:VEVENT)(开始,一个数字大于0的换行符或字符不等于[和结束]
当我插入像'foo[nBEGIN:VEVENT[ndata[nEND:VEVENT[nbar'这样的东西时这很好用但是问题就出现了:我有两个测试字符串,上面一个返回一个结果,下面一个不是:

1[nBEGIN:VEVENT[ndata1[nEND:VEVENT[nxxxxxxxxxxx[BEGIN:VEVENT[ndata2[nEND:VEVENT 1[nBEGIN:VEVENT[ndata1[nEND:VEVENT[nxxxxxxxxxxxx[BEGIN:VEVENT[ndata2[nEND:VEVENT

您可以在regex101.com

为自己测试一下

2 个答案:

答案 0 :(得分:1)

尝试使用此模式,它不会限制VEVENT[n内的内容:

(BEGIN:VEVENT\[ndata(?:\[n|[^\[])+END:VEVENT)

示例:http://regex101.com/r/zL2sK1

答案 1 :(得分:0)

对于每个懒得看看评论的人:this是L'我想出的解决方案,我做了一些调整:

(?:BEGIN:VEVENT)\[n(.+?)\[.(?:END:VEVENT)