gpt4 book ai didi

Java 扫描器获取下一个分隔符

转载 作者:行者123 更新时间:2023-12-01 04:53:51 25 4
gpt4 key购买 nike

我正在 try catch 可使用“\”将命令扩展到多行的命令。因此,可能的分隔符可以是:

Pattern assignment = Pattern.compile("[^\\\\]\\n");

当然,这存在截断“\n”之前的最后一个非“\”字符的问题。我试图通过尝试以下操作来恢复该字符:

由于扫描仪的输入格式为:T1 D1 T2 D2 T3 D3...其中 T# 和 D# 分别对应于标记和分隔符数字“#”,我认为这可行:

Pattern p = Pattern.compile("\\\\?\\s+");

String residue = file.findInLine(assignment);
String curToken = file.next().trim();

if(residue == null)
residue = "";
else
residue = residue.trim();

Scanner tokens = new Scanner(curToken + residue).useDelimiter(p);

当模式与分隔符相同时,findInLine 应该忽略扫描仪的分隔符,而不是获取 T1 和 D1 的串联,而是返回 null!谁能解释一下这种奇怪的行为吗?

最佳答案

弄清楚如何获得我想要的行为,但我仍然不明白为什么我尝试的方法不起作用。

解决方案是使用负向后查找,它不会消耗非“\”:

Pattern assignment = Pattern.compile("(?<!\\\\)\\n");

关于Java 扫描器获取下一个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14488998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com