2013-12-13 29 views
0

我有一个文本,我想用正则表达式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
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) 

我只是忽略了标签,标签中的文本,然后取这是内部支架的文本。

+0

它不应该提取标签标签 –

+0

之间的括号(10)不应该存在,因为它在'

+0

之间。我想一个干净的方法是将它分成两步:(A)删除所有孩子的标签元素,(B)提取数字。 (B)可以如上所述完成。 (A)可以使用SAX,XSLT,XQuery或其他一些XML处理机制来完成。 – user152468

相关问题