2014-04-14 161 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替換字符串中的[ä,ü,ö] ...但它需要真正快速更改..並非字符串中的每個字符都需要查找。 –

相關問題