扫描仪正则表达式分隔符问题

时间:2014-09-06 16:48:26

标签: java regex java.util.scanner tokenize

我设置扫描仪的分隔符,如:

scanner.useDelimiter("(\\s*?)(#.*?\n)(\\s*?)");

目标是忽略表格的评论

#comment \n

因此:

Hello#inline comment
world.

变为:

Hello
world.

通过像我一样设置分隔符,我想:

Hello#inline comment world.

会变成:

[Hello]

Hello#inline comment\n world.

会变成

[Hello, world.]

1 个答案:

答案 0 :(得分:3)

我可能会弄错,但看起来你可能想要使用像

这样的东西
scanner.useDelimiter("#.*(\r?\n|\r)?");

您需要记住,不是每一行都以\n(或\r\r\n)结尾,例如最后一行的末尾不能有\n。石灰分离器在不同的操作系统中也可能不同。

编辑:

根据您的评论,您可能需要添加扫描仪标准分隔符(一个或多个空格 - \\s+\p{javaWhitespace}+,如果您有效),请尝试使用

scanner.useDelimiter("\\s*#.*(\r?\n|\r)?|\\s+");