2009-05-04 40 views
1

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

我已经创建了一个BufferedReader对象:

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

,然后我曾尝试使用扫描仪类的选项来指定不同的分隔符,就像这样:

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

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

</review><review> 

我想说的是,如果您在文本中的任何位置找到“<review>”,请在下面的几行(或一段文字)内找到“</review>”。问题是<review></review>在文本中的不同位置,有时粘在其他文本(因此作为分隔符的空白空间不能帮助我)。

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

+0

我发布后多次编辑文本,所以现在一切都被读取,我希望(对不可见的东西抱歉) – user42155 2009-05-04 19:32:49

回答

3

不要试图用正则表达式解析XML;它只会导致疼痛。已经有很多 非常好的 existingXMLAPIs已经在Java中;为什么要重塑他们?

反正来搜索文本文件中的字符串,你应该:

  1. 加载的文件作为字符串(example
  2. 创建Pattern搜索
  3. 使用Matcher到遍历任何匹配
+0

xom - http://www.xom.nu/ - 我的收藏orite – lucas 2009-05-04 19:50:09

1

使用XML解析器。

或者使用xpath,像这样的example

1

我以为我可能会使用在Java中(的模式和Matcher类)的正则表达式API,但他们似乎以匹配特定的字符串或行,我想有文本作为一个连续字符串

嗯,是否阻止您将XML文件读入字符串,然后使用正则表达式API进行操作?

你可以很容易地读取文件到一个字符串使用例如来自Apache Commons IOFileUtils:见readFileToString(File file, String encoding)

1

我也建议使用XML解析API ......但是当你只想做一些“审核”标签的情况下,也许你可以使用SAX比DOM更好...

0

我觉得这里我们可以在文本文件中复制单个行成一个字符串,然后试图将一个字符串(搜索字符串)与字符串(行)匹配

不过,虽然excuting像元字符/或错误产生#等。

相关问题