java - 为什么这个java程序不能运行?

标签 java regex

我想要This imageurl.txt文件,来自 this source.txt ,与程序。 如果我只尝试使用“p”或“p2”,那么就可以了。但这两种模式,都写不出来。

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.io.*;

public class imageurl
{
    public static void main(String[] args) 
            throws IOException
    {
    for ( int i = 1; i < 5000; i++ )
        {
        toContent(i);
        Pattern p = Pattern.compile("cacheimages/(.*)[\"][ ]*target=");
        Pattern p2 = Pattern.compile("</b>[ ]*[(](.*)[)]</div>");
        BufferedReader r = new BufferedReader(new FileReader("source\\source"+i+".txt"));
        String line;
        FileWriter writer = new FileWriter("imageurl\\imageurl"+i+".txt");
        while ((line = r.readLine()) != null )
            {
            Matcher m = p.matcher(line);
            Matcher m2 = p2.matcher(line);
            while (m.find())
            while (m2.find())
                {
                String c = (m.group(1));
                String c2 = (m2.group(1));
                System.out.println("<name>"+c2+"</name>_<url>http://www.geocaching.hu/cacheimages/"+c+"</url>"+"\n");
                writer.write("<name>"+c2+"</name>_<url>http://www.geocaching.hu/cacheimages/"+c+"</url>"+"\n");
                }
            }
            writer.close();
        }
    }
    private static void toContent(int i)
    {
    }
}

最佳答案

问题是您匹配的两个表达式不同时存在于同一行中。您需要一次阅读两行才能获得您想要的结果。

. . .
String line2;
while ((line = r.readLine()) != null )
    Matcher m=p.matcher(line);
    if (m.find()) {
        if (line2 = r.readLine() != null) {
            Matcher m2=p2.matcher(line);
            if (m2.find()) {
                String c=m.group(1);
                String c2=m2.group(1);
                String outmsg=String.format("<name>%s</name>_<url>http://www.geocaching.hu/cacheimages/%s</url>\n", c2, c);
                System.out.print(outmsg);
                writer.write(outmsg);
            }
        }
        writer.close();
    }
}

关于java - 为什么这个java程序不能运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551816/

相关文章:

java - 我可以使用什么来代替 JPanel 中的按钮来在所有操作系统中获得相同的外观?

python - 正则表达式从 Python 中的 MMD 元数据中提取 #hashtags

regex - Java替换所有方法附加替换字符串而不是替换

javascript - 使用 jquery 或正则表达式用点分割字符串但点不在单引号中

java - 某一列的更改源 RethinkDB

java - 单击 recyclerview 中的列表之一时如何关闭 Activity ?

java - 为什么泛型类型和通配符类型输出结果不同

Java MySQL和JFrame连接 "Cannot convert from boolean to connection"

regex - Powershell:无法让正则表达式在多行上工作

java - 正则表达式将引用与最小字数匹配