日期:2014-05-20  浏览次数:20874 次

正则表达式字符串中间任意匹配
急求一正则表达式匹配
<a href="http://***.***.***/***/" onclick="co('**')" class="lr">***</a>
除了<a和</a>外其他字符可以任意匹配!
在线等待,求高手指点……

------解决方案--------------------
Java code


    public class Test{
    public static void main(String[] args) {
    String regex = "^<a(.*)</a>$";      
    String source = "<a href=\"http://***.***.***/***/\" onclick=\"co('**')\" class=\"lr\">***</a>";
    Matcher matcher = Pattern.compile(regex).matcher(source);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }
    }
    }
/*output:
href="http://***.***.***/***/" onclick="co('**')" class="lr">***
*/

------解决方案--------------------
"^<a(.*?)</a>
------解决方案--------------------
只要你文件里有那句代码,这个表达式还是行的,你试试下面的程序:

Java code


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class Test {
    public static void main(String[] args) {
    String regex = "^<a(.*)</a>$";//      
        //String source = "<a href=\"http://***.***.***/***/\" onclick=\"co('**')\" class=\"lr\">***</a>";
    String source = fileToString();//将字符串改为这个方法就可以了,然后启动并读取它    
    Matcher matcher = Pattern.compile(regex,Pattern.DOTALL).matcher(source);//此时将他改为单行模式
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
        
    }
    
    public static String fileToString() {
    StringBuilder sb = new StringBuilder();
    JFileChooser jFileChooser = new JFileChooser();
    javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {
        public boolean accept(File file) {
        if (file.isDirectory())
            return true;
        String fileName = file.getName();
        if (fileName.toUpperCase().endsWith("TXT"))
            return true;
        return false;
        }

        public String getDescription() {
        return "读取文本文件";
        }
    };
    // 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话
    // jFileChooser.addChoosableFileFilter(fileFilter);
    // jFileChooser.setFileFilter(fileFilter);
    int returnValue = jFileChooser.showOpenDialog(null);
    if (returnValue == JFileChooser.APPROVE_OPTION) {
        File file = jFileChooser.getSelectedFile();
        if (!file.exists()) {
        prompt("文件不存在");
        return null;
        }
        // 检查文件名是否符合要求,这一步暂时省略......................................
        BufferedReader br = null;
        try {
        br = new BufferedReader(new FileReader(file));

        String string;
        while ((string = br.readLine()) != null) {
            sb.append(string);
            sb.append("\r\n");
        }
        } catch (IOException e) {
        throw new RuntimeException(e);
        } finally {
        if (br != null)
            try {
            br.close();
            } catch (IOException e) {
            throw new RuntimeException(e);
            }
        }
    }
    return sb.toString();
    }

    public static boolean isAgree(String hint) {
    int returnValue = javax.swing.JOptionPane.showConfirmDialog(null, hint);
    if (returnValue == javax.swing.JOptionPane.YES_OPTION)
        return true;
    else
        return false;
    }

    public static int prompt(String promptMessage) {
    return JOptionPane.showConfirmDialog(null, promptMessage, "友情提示",
        JOptionPane.WARNING_MESSAGE);
    }
    // ///////////////////////////////////////////////////////////////////////////////////////////////////////

}