Dart正则表达式用于对数据块进行分组



我正在尝试使用Dart中的正则表达式来对具有类似结构的数据块进行分组。下面是我正在使用的一个示例字符串。

@prefix : <#>.
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
@prefix c: </profile/card#>.
@prefix c0: <https://anushka.net/profile/card#>.
@prefix c1: <https://isuru.net/profile/card#>.
:ControlReadWrite
a acl:Authorization;
acl:accessTo <personal-data.ttl>;
acl:agent c:me;
acl:mode acl:Control, acl:Read, acl:Write.
:ReadWrite
a acl:Authorization;
acl:accessTo <profile-data.ttl>;
acl:agent c:me, c0:me;
acl:mode acl:Read.
:Read
a acl:Authorization;
acl:accessTo <medical-data.ttl>, <education-data.ttl>;
acl:agent c:me, c0:me, c1:me;
acl:mode acl:Read.

我想把上面的字符串分成以下三组,忽略带有单词@prefix的行。

a acl:Authorization;
acl:accessTo <personal-data.ttl>;
acl:agent c:me;
acl:mode acl:Control, acl:Read, acl:Write.
a acl:Authorization;
acl:accessTo <profile-data.ttl>;
acl:agent c:me, c0:me;
acl:mode acl:Read.
a acl:Authorization;
acl:accessTo <medical-data.ttl>, <education-data.ttl>;
acl:agent c:me, c0:me, c1:me;
acl:mode acl:Read.

由于这个组中的每一个都以.n结尾,所以我尝试使用/a acl:Authorization([a-zA-Z;<>n: -0-9].n)/,但没有成功。如有任何帮助,我们将不胜感激。

我认为:SomeWords是开始,;是分隔符,.是结束。

类似的东西

var re = RegExp(r"(?<=^:[a-zA-Z]+n)(?:^s+.*;$n)*(?:^s+.*.n)", 
multiLine: true);

这将匹配以空格开头、以;或(对于最后一行(.结尾、前面有一行:SomeWords的行。

最新更新