Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用正则表达式拆分字符串 公共字符串替换(){ String[]parts=str.split(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);); 对于(int i=0;i_Java_Regex - Fatal编程技术网

Java 如何使用正则表达式拆分字符串 公共字符串替换(){ String[]parts=str.split(&([A-Za-z]+|[0-9]+|x[A-Fa-f0-9]+);); 对于(int i=0;i

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

是什么让这行完全“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 (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());
}