如何将文本文件(或XML文件)表示为整个字符串,并在其中搜索(或匹配)特定字符串?

我创建了一个BufferedReader对象:

BufferedReader input =  new BufferedReader(new FileReader(aFile));

然后我尝试使用Scanner类及其选项来指定不同的分隔符,如下所示:

//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) {  ... }

使用像这样的扫描仪类我可以逐行读取文本,也可以逐字逐句阅读,但它对我没有帮助,因为有时在文本中,我想要处理,我有

</review><review>

我想说:如果找到<!>“; <review> <!>”;在文本的任何地方,使用以下下一行(或一段文本)执行某些操作,直到找到<!> quot; </review> <!> quot;。问题是<=>和<=>位于文本的不同位置,有时会粘贴到其他文本上(因此空格作为分隔符对我没有帮助。)

我原以为我可能会使用Java中的正则表达式API(Pattern和Matcher类),但它们似乎匹配特定的字符串或行,我希望将文本作为一个连续的字符串(至少这个是我对他们所读到的关于他们的印象。你能告诉我在这种情况下应该使用哪些结构/方法/类吗?谢谢。

有帮助吗?

解决方案

不要尝试使用正则表达式解析XML;它只会带来痛苦。有很多非常好 现有 XML Java中的API 已经存在;为什么要重新发明它们?

无论如何,要在文本文件中搜索字符串,您应该:

  1. 将文件作为字符串加载(示例
  2. 创建 Pattern 搜索
  3. 使用 Matcher 迭代任何比赛

其他提示

在我看来,您似乎正在尝试使用结构化的xml文件,并建议您查看 javax.xml.parsers.DocumentBuilder 或其他内置的 API 来解析文档。

使用XML解析器。

或者使用xpath,例如示例

  

我原以为我可能会使用Java中的正则表达式API(Pattern和Matcher类),但它们似乎匹配特定的字符串或行,我希望将文本作为一个连续的字符串

嗯,是否有什么东西会阻止你将XML文件读入String,然后使用正则表达式API对其进行操作?

您可以使用例如文件轻松地将文件读入字符串来自Apache的 FileUtils Commons IO :见 readFileToString(File file, String encoding)

我还建议使用XML解析API ...但是因为你只想在<!>的情况下做一些事情;回顾<!>标签,也许你可以比DOM更好地使用SAX ......

我想在这里,我们可以将文本文件中的单个行复制到一个字符串中,然后尝试将子字符串(搜索字符串)与字符串(行)匹配

但是错误会产生错误,而不是像/或#等等。#/ p>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top