在Dart正则表达式中匹配$(美元符号)词

时间:2018-06-29 11:22:14

标签: regex dart

我要匹配文本中的所有美元符号单词。例如,"Hello $VARONE this is $VARTWO"将匹配$VARONE$VARTWO

正则表达式应为/\$(\w+)/g,但是当我在Dart中将其与DartPad(https://dartpad.dartlang.org/)中的编译器一起使用时,单词不匹配。

void main() {
  final variableGroupRegex = new RegExp(r"/\$(\w+)/g");

  Iterable<Match> matches = variableGroupRegex.allMatches("Hello \$VARONE this is \$VARTWO");
    for (Match match in matches) {
         print("match $match"); // code is never run as no matches
    }
}

1 个答案:

答案 0 :(得分:2)

您可以将其修复为

final variableGroupRegex = new RegExp(r"\$(\w+)");

Iterable<Match> matches = variableGroupRegex.allMatches("Hello \$VARONE this is \$VARTWO");
for (Match match in matches) {
     print(match.group(0));
     print(match.group(1));
}

输出:

$VARONE
VARONE
$VARTWO
VARTWO

在这里,您使用原始字符串文字定义了正则表达式,而r"\$(\w+)定义了\$(\w+)模式。然后,要访问整个匹配项,您可以使用.group(0),并使用.group(1)来获取捕获的值。