2

有什么方法可以在 Dart 正则表达式中实现相当于负向后看的效果?我需要匹配一个不以特定字符集开头和结尾的字符串。

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

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

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

它会匹配.textortext=但不匹配Me.textorFtextABC

4

2 回答 2

3

对于那些需要在 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
*/
于 2019-04-18T14:53:59.363 回答
2

你的答案在这里:

javascript后视模仿

问题是 DART 正则表达式与 Javascript 正则表达式具有完全相同的功能。令许多人感到遗憾的是,Javascript 不支持后视。但是该链接提供答案。

于 2013-04-07T00:30:19.717 回答