Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式检查迷宫的有效字符_Java_Regex - Fatal编程技术网

Java正则表达式检查迷宫的有效字符

Java正则表达式检查迷宫的有效字符,java,regex,Java,Regex,此检查需要确保文件中的所有行都以墙开始,最多有一个入口,最多有一个出口,并以墙结束。我将条件分解,以便测试它们。它在cs=“WWWW”、“WXW”、“wwwwwwwwww”时失败 试一试 这不是最有效的,但你可以努力改进它。:)另外,我不确定你的空格规则是什么 附录 看 如果您使用的是Java字符串,请不要忘记将反斜杠加倍 此外,空格几乎可以出现在任何地方这一事实让我怀疑,一个基于非正则表达式的函数也可以。您始终可以遍历序列,计算Rs和Xs,忽略空格,确保第一个和最后一个字符为Ws,并在看到坏字

此检查需要确保文件中的所有行都以墙开始,最多有一个入口,最多有一个出口,并以墙结束。我将条件分解,以便测试它们。它在cs=“WWWW”、“WXW”、“wwwwwwwwww”时失败

试一试

这不是最有效的,但你可以努力改进它。:)另外,我不确定你的空格规则是什么

附录

如果您使用的是Java字符串,请不要忘记将反斜杠加倍


此外,空格几乎可以出现在任何地方这一事实让我怀疑,一个基于非正则表达式的函数也可以。您始终可以遍历序列,计算Rs和Xs,忽略空格,确保第一个和最后一个字符为Ws,并在看到坏字符或额外的R或W时返回
false

您在检查什么?我正在检查以“W”开头的每一行或字符序列,以“W”结尾,墙与墙之间最多有一个“R”或最多一个“X”。好的,谢谢,我会试试的。空格的规则很简单,它可以包含0到多个空格。我意识到这并不能净化迷宫,因为你可以创建一排所有的墙,但这是要求的,迷宫的解算器负责在出现类似情况时提供反馈。请原谅大量的编辑。我想我可以随机应变。我终于找到了Regexr,并对它进行了测试——希望足够彻底。:)哇,谢谢你的提示,Regexr实际上非常有用,我从没听说过。对不起,这是我学java的第一学期。
/** 
 * Check to ensure all lines are only composed of walls, 
 * entrance, exit, and space
 */
protected boolean invalidMazeCharacters(CharSequence cs) {

    p = Pattern.compile("^W+(R??W*|X??|W*|\\s*W*)W+$");
    m = p.matcher(cs);
    if (!m.matches()) {
        return true;
    }
    return false;
}
^W+(R?W*X?|X?W*R?)W+$
^W[W\s]*(?:R?[W\s]*X?|X?[W\s]*R?)[W\s]*W$