我怎样才能用 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
是不够的,因为它会被正则表达式变量屏蔽。
如果我用正则表达式处理一个简单的字符串,我希望我可以提取变量。手册中的示例说明提取会产生存储变量。这不按预期工作。如果我执行以下正则表达式:
/\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
是不够的,因为它会被正则表达式变量屏蔽。