我尝试在我的flutter应用程序中匹配恰好包含单词“ world”的单词和句子。我认为最好的方法是使用单词边界。我的正则表达式如下:
String str = "world";
var regexp = RegExp("\b($str)\b", caseSensitive: false);
但是它不起作用。这是输出:
regexp.hasMatch("Hello World"); //false
regexp.hasMatch("World"); //false
regexp.hasMatch("worlds"); //false as expected
\ b在Dart中不起作用吗?有谁知道如何实现期望的行为?我找不到有关此的任何信息。
谢谢。
答案 0 :(得分:2)
来自飞镖regex documentation;
Dart正则表达式与JavaScript正则表达式具有相同的语法和语义。
如果您在JavaScript中使用RegExp
,则单词边界实际上将由\\b
表示,即我们需要向\b
单词边界添加一个额外的转义符:>
String str = "world";
var regexp = RegExp("\\b($str)\\b", caseSensitive: false);
regexp.hasMatch("Hello World"); // true
请注意,通常应尽可能避免使用RegExp
,而应使用正则表达式文字。这样做的原因是文字放松了,并使regex语法更简单。