Java 如何使用正则表达式拆分字符串 公共字符串替换(){ String[]parts=str.split(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);); 对于(int i=0;i
是什么让这行完全“String[]parts=str.split”(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);”)呢?我尝试了我的代码,但它没有做任何事情。有人能给我一个字符串示例,让我看看它是如何拆分的吗?这里有一个字符串示例,它将由您提供的Java 如何使用正则表达式拆分字符串 公共字符串替换(){ String[]parts=str.split(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);); 对于(int i=0;i,java,regex,Java,Regex,是什么让这行完全“String[]parts=str.split”(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);”)呢?我尝试了我的代码,但它没有做任何事情。有人能给我一个字符串示例,让我看看它是如何拆分的吗?这里有一个字符串示例,它将由您提供的regex拆分 public String replace(){ String[] parts = str.split("&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);"); for
regex
拆分
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 "";
}
正则表达式显然是用于命名或编号的HTML实体引用,但它是不完整的。它缺少编号实体的哈希符号,并且不允许名称中包含数字,如
²代码>和¼代码>。以下是我将使用的:
String str = "hello &21342352352; world"; // Two pieces
String str = "hello &xffea424242; world"; // Two pieces
String str = "hello &xffea424242; world &hefiajeifjae; world"; // Three pieces.
但是,我不明白为什么要将正则表达式与split()
一起使用,它会丢弃匹配的所有内容,并返回所有其他内容。如果您想对实体本身做些什么,您很可能需要使用find()
。下面是一个示例,它只收集列表中的实体
"&(?:[a-zA-Z]+[0-9]*|#[0-9]+|#x[0-9a-fA-F]+);"
List matchList=new ArrayList();
模式p=模式。编译(&(?[a-zA-Z]+[0-9]*|#[0-9]+|#x[0-9a-fA-F]+);
匹配器m=匹配器p;
while(m.find()){
matchList.add(m.group());
}
text1text2
有很多网站,比如你可以在互动中抛出各种各样的字符串,就像XML/HTML实体一样,因此有了前面的&
和后面的代码>变量str
在哪里定义?有一个在线正则表达式测试程序列表,按风格列出(在底部)。我使用的是Debuggex和regex101。regex101还有一个替换测试仪。离线时我使用Regex Buddy。我只是想弄清楚如何用HTMLäu escapecodes替换字符串中的[ä,ü,ö]。但这需要一个快速的改变。。并非字符串中的每个字符都需要查找。。
"&(?:[a-zA-Z]+[0-9]*|#[0-9]+|#x[0-9a-fA-F]+);"
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());
}