RegEx用于没有制表符的空格

时间:2014-01-14 15:59:06

标签: java regex

我正在尝试为声纳插件构建一个解析器,其中标记可以包含空格和制表符,以便使用它们来实现空格的检查规则。因此,我想将它们存储到不同的令牌中。

我将空格和制表符设置为TokenType:

    .withChannel(regexp(TokenType.TAB, "\t"))
    .withChannel(regexp(TokenType.WHITESPACE, "\\s"))

但是,标签也被视为空格标记, 因为在Java中/s的正则表达式匹配任何空格字符(空格,制表符,换行符,回车符)

区分标签与空格的正确正则表达式是什么?

2 个答案:

答案 0 :(得分:3)

我不熟悉TokenType语法,但要获取所有空白没有标签,您可以使用:

[ \n\x0b\r\f]

因为\s只是写[ \t\n\x0B\f\r]的简短形式。请参阅documentation

答案 1 :(得分:2)

使用:

.withChannel(new BlackHoleChannel("\n"))        //removes newlines from source code
.withChannel(regexp(TclTokenType.TAB, "\t"))    //matches tabs
.withChannel(regexp(TokenType.WHITESPACE," "))  //matches spaces

正确匹配空格,并识别标签。关键在BlackHoleChannel

这是来自问题的revision 15的FILIaS解决方案。