用正则表达式忽略两个字符串之间的文本

时间:2013-12-13 07:25:20

标签: java regex

我有一个文本,我想用正则表达式java提取文本的括号 例如文字:

<p>Now a days, regenerative medicine(1) in stem cell(3) filed
   widely <label>attractive(10) by</label> attractive by scientists(4).</p>

如果标签标签之间不存在括号,我想提取文本的括号 例如文本上方的摘录:

(1)
(3)
(4)

它不应该在标签标签之间提取括号 我使用正则表达式:

 (<label>){0,1}[(\\w\\W)&&[^[</label>|\\(|\\)]]]*(\\(\\s*[(\\w\\W)&&[^\\(\\)]]+\\)) 
 [(\\w\\W)&&[^[</label>|\\(|\\)]]]*(</label>){0,1}

1 个答案:

答案 0 :(得分:1)

public static void main(String[] args) {
        String in = "<p>Now a days, regenerative medicine(1) in stem cell(3) filed widely <label>attractive(10) by</label> attractive by scientists(4).</p>".replaceAll("<label>.*</label>", "");;
        //String inin = in.replaceAll("<label>.*</label>", "");
        //System.out.println(inin);
        Pattern p = Pattern.compile("\\((.*?)\\)");
        Matcher m = p.matcher(in);

        while(m.find()) {
            System.out.println("(" + m.group(1) + ")");
        }
    }

输出:

(1)
(3)
(4)

我只是忽略label标签内的文本,然后取出括号内的文字。