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 "";
}
是什么让这一行完全“String [] parts = str.split(”&amp;([A-Za-z] + | [0-9] + | x [A-Fa-f0-9] +) ; “);”?我尝试了我的代码,但它没有做任何事情......可能有人给出了一个字符串示例,所以我可以看到它如何分裂?
答案 0 :(得分: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.
答案 1 :(得分:0)
正则表达式显然是用于命名或编号的HTML实体引用,但它不完整。它缺少编号实体的哈希符号,并且不允许带有数字的名称,例如²
和¼
。这是我要用的:
"&(?:[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());
}