2014-04-14 104 views
0
public String replace(){ 
    String[] parts = str.split("&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);"); 
    for (int i = 0; i < parts.length; i++) { 
     System.out.println(parts[i]); 

    } 
    return ""; 
} 

什么使这条线正好 “字符串[]份= str.split(” &([A-ZA-Z] + | [0-9] + | X [ A-发f0-9] +); “);”?我尝试在我的代码,但它没有做任何事情......有人给一个字符串的例子,所以我可以看到它是如何分裂?如何使用正则表达式分割字符串的

+1

'<文本1 > <文本2 >' – DNA

+1

有无数个这样的网站http://www.myregextester.com/在那里你可以交互 – demongolem

+1

看起来更像是XML/HTML实体抛出各种串的,因此前导'&'和尾部';' – DNA

回答

2

下面是一个将由您提供的regex拆分的字符串示例。

import java.util.regex.*; 


public class ReverseRegex{ 
    public static void main(String[] args) { 
     String str = "hello &fjeaifjiajwta; world"; 
     String[] parts = str.split("&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);"); 
     for (int i = 0; i < parts.length; i++) { 
      System.out.println(parts[i]); 
     } 
    } 
} 

下面是几个例子。

String str = "hello &21342352352; world"; // Two pieces 
    String str = "hello &xffea424242; world"; // Two pieces 
    String str = "hello &xffea424242; world &hefiajeifjae; world"; // Three pieces. 
0

该正则表达式显然是一个命名或编号的HTML实体引用,但它是不完整的。它缺少编号实体的散列符号,并且不允许包含数字的名称,如&sup2;&frac14;。这是我会用什么:

"&(?:[a-zA-Z]+[0-9]*|#[0-9]+|#x[0-9a-fA-F]+);" 

不过,我不明白你为什么会想使用该正则表达式与split(),其扔掉不管它相匹配,并返回一切。如果你想对实体本身做些什么,你很可能会想要使用find()。以下是一个仅收集列表中的实体的示例;

List<String> matchList = new ArrayList<String>(); 
Pattern p = Pattern.compile("&(?:[a-zA-Z]+[0-9]*|#[0-9]+|#x[0-9a-fA-F]+);"); 
Matcher m = p.matcher(s); 
while (m.find()) { 
    matchList.add(m.group()); 
} 
+0

我只是想弄清楚如何用HTML_escapecodes替换字符串中的[ä,ü,ö] ...但它需要真正快速更改..并非字符串中的每个字符都需要查找。 –

相关问题