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

标签 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.]

最佳答案

我可能弄错了,但看起来你可能想使用类似的东西

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

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

编辑:

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

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

关于java - 扫描仪正则表达式分隔符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702507/

相关文章:

java - 在android中将数据从一个 fragment 传递到下一个 fragment

json - 如何替换 json 字符串和正则表达式中的双引号?

java - 邮件 header 消息的正则表达式

java - 如何解决我的输入中的 'nextLine()' 问题?

java - docx4java 的SectionWrapper.getHeaderFooterPolicy——我可以用它来删除页眉和页脚吗

java - 来自在线测试站点的代码编码

css - 如何只保留价格中没有空格的数字(删除符号和逗号)?

java - 坚持创建一个新对象

java - 如何确保 Scanner hasNextInt() 请求新输入?

java - 读取 url 到字符串时什么也得不到