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

Java 使用正则表达式忽略两个字符串之间的文本,java,regex,Java,Regex,我有一个文本,我想用regexjava提取文本的括号。 例如,文本: <p>Now a days, regenerative medicine(1) in stem cell(3) filed widely <label>attractive(10) by</label> attractive by scientists(4).</p> 它不应在标签标签之间提取括号。 我对正则表达式的使用如下: (<label>){0,1}[

我有一个文本,我想用regexjava提取文本的括号。
例如,文本:

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

它不应在标签标签之间提取括号。
我对正则表达式的使用如下:

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

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

它不应该在标签标签之间提取括号
(10)
不应该在那里,因为它在
标签之间。我想一个干净的方法是将其分为两个步骤:(a)删除标签元素及其所有子元素,(B)提取数字。(B) 可以如上所述进行。(A) 可以使用SAX、XSLT、XQuery或其他XML处理机制来完成。@user986566我编辑了我的答案。我想这会解决你的问题。
 (<label>){0,1}[(\\w\\W)&&[^[</label>|\\(|\\)]]]*(\\(\\s*[(\\w\\W)&&[^\\(\\)]]+\\)) 
 [(\\w\\W)&&[^[</label>|\\(|\\)]]]*(</label>){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)