有没有办法在Dart regexp中实现相当于负面的后视?我需要匹配一个不以一组特定字符开头和结尾的字符串。
如果在字符串的开头找到匹配的部分,我无法找到执行此操作的正则表达式而不会失败。消极的外观似乎是唯一的答案,但Dart没有。
这是我想要工作的正则表达式,但它没有:
(?<!(Me\.)|[frFR])(text)(?!\w)
匹配.text
或text=
但不匹配Me.text
或FtextABC
答案 0 :(得分:3)
你的答案就在这里:
事实是,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
*/