从较大的字符串中提取包含通配符的字符串

时间:2012-01-20 10:10:10

标签: java regex

我有一大堆HTML需要从中提取一句话。字符串realClean包含HTML。

<div class="smallfont">
<small>

Originally Posted By: chingy51o

</small>
</div>

我需要将chingy51o拉出来。我已经有一段时间遇到这个问题,所以我扩大了我的搜索范围,只是拉出包含Originally Posted By:的任何一行,希望一旦我能够分离出来,我就可以提取更多来自它的具体数据,但我甚至可以提取该行。

            String authorString = "Originally Posted By: .*?";
            if (realClean.contains(authorString)) {
                    Log.d("AUTHORS!", authorString + "\n");
            }

但是没有返回任何值。

4 个答案:

答案 0 :(得分:1)

创建一个Scanner对象并搜索每一行。

String authorString = "Originally Posted By:";
Scanner scanner = new Scanner(realClean);
try {
  while ( scanner.hasNextLine() ){
    String line = scanner.nextLine();
    if(line.contains(authorString){
       Log.d("AUTHORS!", line.split(authorString)[1] + "\n");
  }
}

答案 1 :(得分:1)

为什么不尝试这样的事情:

        int start = realClean.indexOf("Originally Posted By: ") + 22;
        int end = realClean.indexOf(newline, start);
        String realAuthor = realClean.substring(start, end);

您可以将作者与文档的其余部分(如空格)分开的任何内容替换换行符

答案 2 :(得分:0)

我会阅读Java Patterns,尤其是capturing text in a group

答案 3 :(得分:0)

假设realClean是一个字符串,您需要知道String.contains()CharSequence作为参数,而不是正则表达式。如果要对String执行正则表达式匹配,则需要使用String.matches()或创建正则表达式模式并手动将String与其匹配。