如何在CodinGame上调试这个正则表达式?

时间:2017-09-20 18:16:23

标签: java regex

我正试图在CodinGame上解决这个难题 https://www.codingame.com/ide/puzzle/cgx-formatter

在这个谜题中,您会得到一些文本作为输入,并且必须以某种方式对其进行格式化。我的方法是检查输入的开始,如果它是一个数字,字符串,布尔值,括号括起来的块等。我从输入字符串中删除匹配的部分并构建我的元素对象。当我完成后,我通过toString方法打印元素。

我无法从'string'辨别出'key'=something。我希望匹配输入开头的所有内容,包含在''''并没有跟=。密钥与=之间可以有空格或制表符。

if子句:

if(concat.matches("^'.*'.*")  && !concat.matches("^'.*'\\s*=")){
    System.err.println("Test");
}

为字符串'key'='value'计算true(错误)。我做错了什么?

concat是连接成一行的输入字符串。

1 个答案:

答案 0 :(得分:0)

"^'([^']*)'[ \t]*[^=]*$"

()是你的匹配,没有引号的密钥。

这将匹配任何以单引号开头的字符串,后跟任意数字的除单引号之外的任何字符,直到单引号,之后可能出现任何数字(包括零)的空格或制表符,并且在此之后任何数字(包括零)任何字符(不包括等号)可能会出现在行的末尾。