Java 不带制表符的空白的RegExp
我正在尝试为sonar插件构建一个解析器,其中令牌可以包含空格和制表符,以便使用它们实现空格检查规则。因此,我想将它们存储到不同的令牌中 我将空格和制表符设置为TokenType:Java 不带制表符的空白的RegExp,java,regex,Java,Regex,我正在尝试为sonar插件构建一个解析器,其中令牌可以包含空格和制表符,以便使用它们实现空格检查规则。因此,我想将它们存储到不同的令牌中 我将空格和制表符设置为TokenType: .withChannel(regexp(TokenType.TAB, "\t")) .withChannel(regexp(TokenType.WHITESPACE, "\\s")) 但是,制表符也被视为空格标记, 因为在Java中,/s的regexp匹配任何空白字符(空格、制表符、换行符、回车符)
.withChannel(regexp(TokenType.TAB, "\t"))
.withChannel(regexp(TokenType.WHITESPACE, "\\s"))
但是,制表符也被视为空格标记,
因为在Java中,/s
的regexp匹配任何空白字符(空格、制表符、换行符、回车符)
什么是区分制表符和空格的正确regexp?我不熟悉
TokenType
语法,但要获得所有空白而不使用制表符,您可以使用:
[ \n\x0b\r\f]
因为
\s
只是[\t\n\x0B\f\r]
的一种简写形式。请参阅。我不熟悉TokenType
语法,但要获得所有空白,而不使用选项卡,您可以使用:
[ \n\x0b\r\f]
因为\s
只是[\t\n\x0B\f\r]
的一种简写形式。请参阅带有以下内容的。:
.withChannel(new BlackHoleChannel("\n")) //removes newlines from source code
.withChannel(regexp(TclTokenType.TAB, "\t")) //matches tabs
.withChannel(regexp(TokenType.WHITESPACE," ")) //matches spaces
正确匹配空格,并识别制表符。该键位于BlackHoleChannel
上
这是FILIaS对这个问题的解答。包括:
.withChannel(new BlackHoleChannel("\n")) //removes newlines from source code
.withChannel(regexp(TclTokenType.TAB, "\t")) //matches tabs
.withChannel(regexp(TokenType.WHITESPACE," ")) //matches spaces
正确匹配空格,并识别制表符。该键位于BlackHoleChannel
上
这是FILIaS对这个问题的解决方案。在我的案例中,检查并将其转过来,我需要单独的regexp,只是“[]”对我不起作用:/我也尝试过:“[\\s^\t]”但仍然不起作用检查并将其转过来在我的案例中,我需要单独的regexp,只是“[]”对我不起作用:/我也尝试过:“[\\s^\t]”但仍然不起作用这不是TokenType的有效语法,但无论如何,在我的例子中,我甚至不需要换行符或行尾,只需要空格,而是“[]”不做我的工作所以你所说的空白意味着空格?它不是TokenType的有效语法,但不管怎样,在我的例子中,我甚至不需要换行符或行尾空白,但“[]”不做我的工作所以你所说的空白意味着空格?