我怎样才能用 Rascal Regex 简单地提取一个变量

How can I simply extract a variable with Rascal Regex

如果我用正则表达式处理一个简单的字符串,我希望我可以提取变量。手册中的示例说明提取会产生存储变量。这不按预期工作。如果我执行以下正则表达式:

/\w*<subtext:text>\w*/ := "myfulltextstring"

我希望变量 subtext 包含字符串 text。但它是未声明的。如果我在执行前声明 subtext ,它是空的。进行此提取的简单方法是什么?

变量subtext的作用域不是全局的,而是“在匹配的右边”:

/\w*<subtext:text>\w*/ := "myfulltextstring" && bprintln(subtext)

if (/\w*<subtext:text>\w*/ := "myfulltextstring") {
  println(subtext);
}

str x = "";
if (/\w*<subtext:text>\w*/ := "myfulltextstring") {
  x = subtext;
}

仅仅在外部作用域中声明 subtext 是不够的,因为它会被正则表达式变量屏蔽。