考虑在文本文件中包含以下标题的表
Table name goes here
Page 1
This is column one This is This
This is column is column
column two f thre f three f
and hal f
Row1 in column 1 Row2InCol2 Row3 Row4InCol4
Page 2
This is column one This is This
This is column is column
column two f thre f three f
and hal f
Grand Total: - 12 13 25
我想搜索列“This is column three f and a hal f”,这样当我找到这个文本时,我能够获得此列开始的String索引位置(索引“This “)和此列结束的索引位置(单词”hal f“结束的索引,即”f“的索引)。请注意,所有列都包含单词“This”和字母“f”,并且我应该能够以类似方式搜索任何列的起始索引和结束索引,如上所述。
我希望能够这样做,因为我想实现一个解析器,它可以解析文本文件中的表,其中列标题和列数据的索引位置从一个页面到另一个页面不一致(其中换页符字符)表示页面结束)
我不是在寻找任何算法。我想知道Pattern和Matcher类(或任何其他API)是否支持多行文本搜索,如上所述?
答案 0 :(得分:0)
一种过去对我有用的简单模式。
// split on two ore more spaces.
String[] fields = line.split("\\s{2,}");
这会将一个空格视为一个字段的一部分。
答案 1 :(得分:0)
因为您要搜索的文字是固定文字,所以正则表达式不是首选武器 - 只需在整个文本上使用String.indexOf(String)
,包括换行符,从第一个"This"
到最后一个"f"
:
String target = "This\nThis is column is column\n column two f thre f three f\n and hal f";
int start = input.indexOf(target);
int end = start + target.length();
要查找下一个匹配项,请使用上一个end
作为fromIndex
String.indexOf(String str, int fromIndex)