Dart RegExp 字边界等效项

Ell*_*ogo 2 regex dart flutter

我尝试在我的 flutter 应用程序中匹配包含确切单词“world”的单词和句子。我认为最好的方法是使用单词边界。我的正则表达式如下所示:

String str = "world";
var regexp = RegExp("\b($str)\b", caseSensitive: false);
Run Code Online (Sandbox Code Playgroud)

但这不起作用。这是输出:

regexp.hasMatch("Hello World"); //false
regexp.hasMatch("World"); //false
regexp.hasMatch("worlds"); //false as expected
Run Code Online (Sandbox Code Playgroud)

\b 在 Dart 中不起作用吗?有谁知道如何实现所需的行为?我找不到任何有关此的信息。

谢谢。

Tim*_*sen 7

来自 Dart正则表达式文档

Dart 正则表达式与 JavaScript 正则表达式具有相同的语法和语义。

如果你在 JavaScript 中使用RegExp,那么单词边界实际上会用 表示\\b,即我们需要为\b单词边界添加额外的转义:

String str = "world";
var regexp = RegExp("\\b($str)\\b", caseSensitive: false);
regexp.hasMatch("Hello World"); // true
Run Code Online (Sandbox Code Playgroud)

请注意,如果可能的话,您通常应该避免使用RegExp,而是使用正则表达式文字。其原因是文字放松并使正则表达式语法更简单。