java – 为多个模式解析InputStream

前端之家收集整理的这篇文章主要介绍了java – 为多个模式解析InputStream前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在为某些模式解析InputStream以从中提取值,例如我会有类似的东西

我不想使用完整的html解析器,因为我对文档结构不感兴趣,而只是在一些定义明确的信息中. (只有他们的订单很重要)
目前我使用的是一种非常简单的方法,每个模式都有一个Object,其中包含一个打开和关闭’tag’的char [](在示例中,开头是< span class =“filename”>< a href =“和关闭”以获取网址)和位置标记.对于InputStream读取的每个字符,我迭代所有模式并调用匹配(char)函数,一旦开始模式匹配就返回true,从那时起我在StringBuilder中收集以下字符,直到现在活动模式匹配()再次.然后我调用一个具有Pattern和String读取ID的函数来进一步处理它.
虽然这在大多数情况下工作正常,但我想在模式中包含正则表达式,所以我也可以匹配类似的东西

在这一点上,我确信我会重新发明轮子,因为这肯定是以前完成的,而且我真的不想编写自己的正则表达式解析器.但是,我找不到任何可以做我想要的东西.
不幸的是,Scanner类只匹配一个模式,而不是模式列表,我可以使用哪些替代方案?它不应该很重,适用于Android.

最佳答案
你的意思是你要匹配任何< span>具有给定类属性的元素,与其可能具有的其他属性无关?这很容易:

Scanner sc = new Scanner(new File("test.txt"),"UTF-8");
Pattern p = Pattern.compile(
    "

文件“test.txt”包含问题的文本,输出为:

http://example.com/foo
and closing
http://example.com/foo

猜你在找的Java相关文章