DART中的负面背后等效?

时间:2013-04-07 00:09:55

标签: regex dart negative-lookbehind

有没有办法在Dart regexp中实现相当于负面的后视?我需要匹配一个不以一组特定字符开头和结尾的字符串。

如果在字符串的开头找到匹配的部分,我无法找到执行此操作的正则表达式而不会失败。消极的外观似乎是唯一的答案,但Dart没有。

这是我想要工作的正则表达式,但它没有:

(?<!(Me\.)|[frFR])(text)(?!\w)

匹配.texttext=但不匹配Me.textFtextABC

2 个答案:

答案 0 :(得分:3)

你的答案就在这里:

javascript lookbehind mimic

事实是,DART正则表达式与Javascript正则表达式具有完全相同的功能。许多人哀叹,Javascript不支持lookbehinds。但该链接提供答案。

答案 1 :(得分:1)

对于从2.2.1-dev.1.0版本开始在Dart RexExp中需要后向声明的用户,Dart支持后向声明。因此,OP的RegExp在编写时就可以在Dart中使用。

RegExp re = new RegExp(r"(?<!(Me\.)|[frFR])(text)(?!\w)");
List<String> tests = ['.text', 'text=', 'Me.text', 'FtextABC'];
for (String t in tests) {
  print('$t: ${re.hasMatch(t)}');
}

/*
prints: 
.text: true
text=: true
Me.text: false
FtextABC: false
*/
相关问题