我正在尝试使用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
的行。