Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我想在Java中的空白处分界。但是在文本中,它们是html标记,我不想在这里拆分单词。
因此,例如"hello <a>John Smith</a> hey ho"应该拆分为:

hello
<a>John Smith</a>
hey
ho


我考虑过使用split,并在javascript中找到了一个正则表达式,但无法将其转换为java。
有没有比使用split和正则表达式更好的方法?

[编辑]
这是我可以转换的javascript正则表达式,但我想知道是否有比正则表达式更好的方法?
https://stackoverflow.com/a/7552371/2170547

最佳答案

这是一些实际有效的Java7代码http://ideone.com/PWv56h

class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
     String test = "testing 1 2 3 <a title=\"a demo\" href=\"\">testing 4 5 6</a> testing\t7\n8\r9 <br /><script src=\"blah\" />more text";
     java.util.regex.Matcher m = java.util.regex.Pattern.compile("(<(?<tag>[A-Za-z]+)[^>]*?>[^<]*</\\k<tag>>)|(<[A-Za-z]+[^>]*?/>)|([^\\p{Space}]+)").matcher(test);
     while(m.find())
        System.out.println(m.group());
  }
}


正则表达式匹配3个单独的组


带有结束标记的HTML标签
没有结束标记的HTML标记
10-09 02:09