【问题标题】:If statement fails with regex comparison如果语句因正则表达式比较而失败
【发布时间】:2020-04-07 09:28:17
【问题描述】:
public list[str] deleteBlockComments(list[str] fileLines)
{
    bool blockComment = false;
    list[str] sourceFile = [];
    for(fileLine <- fileLines)
    {
        fileLine = trim(fileLine);
        println(fileLine);
        if (/^[\t]*[\/*].*$/ := fileLine) 
        {
            blockComment = true;    
        }
        if (/^[\t]*[*\/].*$/ := fileLine) 
        {
            blockComment = false;
        }
        println(blockComment);
        if(!blockComment)
        {
            sourceFile = sourceFile + fileLine;
        }
    }
    return sourceFile;
}

由于某种原因,我无法在字符串的开头检测到/*。如果我在命令行上执行它,它似乎工作正常。

谁能告诉我我做错了什么?在下图中可以看到比较结果(false)上方要比较的字符串。

【问题讨论】:

    标签: regex if-statement comments rascal


    【解决方案1】:

    [\/*] 是一个匹配正斜杠或星的字符集,而不是一个接一个。只需删除方括号,您的模式就会开始按预期运行。

    在我们这样做的同时,让我们也去掉\t周围多余的方括号

    ^\t*\/*.*$

    【讨论】:

    • 我能够修复它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多