日期:2014-05-19  浏览次数:20807 次

正则表达式 求一个正则
如下代码
Java code
public static void main(String[] args) {
        
        try {
            
            String s = "";
            String html = " <p class='' style='padd-bottom:3px;'><strong>公司的优点</strong></p>"+"政治斗争少,学习空间大"
                    + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>公司的缺点</strong></p>"
                    + "加班太多,工作压力大"
                    + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>你给公司的建议</strong></p>"
                    + "取消显式的末位淘汰率<div style='padding-top:10px;color:#333333;' id='less_rating_129277'>";
            String reg = "</strong></p>.*";
            
            Pattern pattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE
                    | Pattern.MULTILINE | Pattern.DOTALL);
            Matcher matcher = pattern.matcher(html);
            if (matcher.find()) {
                s=matcher.group();
            }
            System.out.println(s);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

我想得到这样的结果
  公司的优点;
政治斗争少,学习空间大
公司的缺点;
加班太多,工作压力大
你给公司的建议;
取消显式的末位淘汰率

------解决方案--------------------
这个真心有点难。。那个标签也太不规则了。。
Java code

String html = " <p class='' style='padd-bottom:3px;'><strong>公司的优点</strong></p>"
                    + "政治斗争少,学习空间大"
                    + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>公司的缺点</strong></p>"
                    + "加班太多,工作压力大"
                    + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>你给公司的建议</strong></p>"
                    + "取消显式的末位淘汰率<div style='padding-top:10px;color:#333333;' id='less_rating_129277'>";
            String reg = "\\<strong\\>([\u4E00-\u9FA5]+).+?p\\>(\\S+?)[<br|<div]";
            Pattern pattern = Pattern.compile(reg);
            Matcher matcher = pattern.matcher(html);
            StringBuffer sb = new StringBuffer();
            while(matcher.find()) {
                sb.append(matcher.group(1) + ":" + matcher.group(2) + ";");
            }
            System.out.println(sb.toString());

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

try {
                 
                 String s = "";
                 String html = " <p class='' style='padd-bottom:3px;'><strong>公司的优点</strong></p>"+"政治斗争少,学习空间大"
                         + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>公司的缺点</strong></p>"
                         + "加班太多,工作压力大"
                         + "<br /><br /><p class='' style='padd-bottom:3px;'><strong>你给公司的建议</strong></p>"
                         + "取消显式的末位淘汰率<div style='padding-top:10px;color:#333333;' id='less_rating_129277'>";
                 String reg = "<[^>]+>([^<>]+?)<[^>]+>";
                 
                 Pattern pattern = Pattern.compile(reg);
                 Matcher matcher = pattern.matcher(html);
                 while (matcher.find()) {
                     s=matcher.group(1);
                     System.out.println(s);
                 }
                 
             } catch (Exception e) {
                 e.printStackTrace();
             }