有什么方法可以在 Dart 正则表达式中实现相当于负向后看的效果?我需要匹配一个不以特定字符集开头和结尾的字符串。
如果在字符串的开头找到匹配的部分,我无法找到执行此操作而不会失败的正则表达式。消极的lookbehinds 似乎是唯一的答案,但Dart 没有。
这是我想要工作的正则表达式,但它没有:
(?<!(Me\.)|[frFR])(text)(?!\w)
它会匹配.text
ortext=
但不匹配Me.text
orFtextABC
有什么方法可以在 Dart 正则表达式中实现相当于负向后看的效果?我需要匹配一个不以特定字符集开头和结尾的字符串。
如果在字符串的开头找到匹配的部分,我无法找到执行此操作而不会失败的正则表达式。消极的lookbehinds 似乎是唯一的答案,但Dart 没有。
这是我想要工作的正则表达式,但它没有:
(?<!(Me\.)|[frFR])(text)(?!\w)
它会匹配.text
ortext=
但不匹配Me.text
orFtextABC
对于那些需要在 Dart RexExp 中进行后向断言的人,从2.2.1-dev.1.0版本开始,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
*/
你的答案在这里:
问题是 DART 正则表达式与 Javascript 正则表达式具有完全相同的功能。令许多人感到遗憾的是,Javascript 不支持后视。但是该链接将提供答案。