当前位置: 代码迷 >> J2SE >> 正则表达式字符串中间任意匹配,该怎么解决
  详细解决方案

正则表达式字符串中间任意匹配,该怎么解决

热度:63   发布时间:2016-04-24 12:27:02.0
正则表达式字符串中间任意匹配
急求一正则表达式匹配
<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);    }    // ///////////////////////////////////////////////////////////////////////////////////////////////////////}