gpt4 book ai didi

java - 如何使用 Java 基于正则表达式将文件分解为标记

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:40:14 26 4
gpt4 key购买 nike

我有一个以下格式的文件,记录由换行符分隔,但有些记录中有换行符,如下所示。我需要获取每条记录并分别处理它们。该文件的大小可能为几 Mb。

 <?aaaaa>
<?bbbb
bb>
<?cccccc>

我有代码:

 FileInputStream fs = new FileInputStream(FILE_PATH_NAME);
Scanner scanner = new Scanner(fs);
scanner.useDelimiter(Pattern.compile("<\\?"));
if (scanner.hasNext()) {
String line = scanner.next();
System.out.println(line);
}
scanner.close();

但是我得到的结果有开头 <\?删除:

aaaaa>
bbbb
bb>
cccccc>

我知道扫描器会处理与定界符模式匹配的任何输入。我能想到的就是手动将定界符模式添加回每条记录。

有没有办法不删除定界符模式?

最佳答案

仅当前面有 ">" 时才在换行符处换行字符:

scanner.useDelimiter("(?<=>)\\R"); // Note you can pass a string directly

\R是系统独立的换行符
(?<=>)是一个look behind,断言(不消耗)前一个字符是 >

而且它很酷,因为 <=>看起来像 Darth Vader's TIE fighter .

关于java - 如何使用 Java 基于正则表达式将文件分解为标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512046/

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