Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 如何为此表达式编写正则表达式_Java_Regex - Fatal编程技术网

Java 如何为此表达式编写正则表达式

Java 如何为此表达式编写正则表达式,java,regex,Java,Regex,我需要编写一个正则表达式,它只允许(ä,ö,ü,…)对数组进行整型。下面的代码也允许数组中有空格。例如parts2[0]和parts2[1]有空格,但应该是 String str="geliyoru mamaadsödsödösdä dädsdäsfäfsä yüwüsüdsüfsäfsfä" String[] parts2 = str.split("[A-Za-z]+|[0-9]+|x[A-Fa-f0-9]"); StringBuilder result = new Stri

我需要编写一个正则表达式,它只允许(ä,ö,ü,…)对数组进行整型。下面的代码也允许数组中有空格。例如
parts2[0]
parts2[1]
有空格,但应该是

String str="geliyoru mamaadsödsödösdä dädsdäsfäfsä  yüwüsüdsüfsäfsfä"
    String[] parts2 = str.split("[A-Za-z]+|[0-9]+|x[A-Fa-f0-9]");
    StringBuilder result = new StringBuilder(str.length());

    for (int i = 0; i < parts.length; i++) {

        System.out.println(parts2[i]);
        result.append(parts[i]);


    }
String str=“geliyoru mamaadsödsödösdädädsdäsfäfsäyüwüsüdsäfsäfsfä”
字符串[]parts2=str.split(“[A-Za-z]+|[0-9]+|x[A-Fa-f0-9]”);
StringBuilder结果=新的StringBuilder(str.length());
对于(int i=0;i
您可以使用Java的
模式.replaceAll
功能

String str= "geliyoru mamaadsödsödösdä dädsdäsfäfsä  yüwüsüdsüfsäfsfä";
Pattern p = Pattern.compile("[^\u00E4\u00F6\u00FC]*");
String result = p.matcher(str).replaceAll("");
[^
]
之间的模式中,您应该使用unicode定义枚举希望保留的所有字符。例如,您可以使用Google/DuckDuckGo查找它们。方括号之间的
^
部分表示您反转匹配。因此,组中不存在的所有字符都匹配。在最后一行中,所有这些字符都被空字符串替换

为了提高性能,我在正则表达式的末尾添加了
*
,这样就可以将字符组作为一个字符进行匹配,从而只需进行一次替换


你可以看到一个jdoodle

regex?您想要分割什么,预期的部分是什么。你需要更具体一些。抱歉,现在更好了,但我没有看到任何带有
ä
ö
等的字符串。此外,肯定还有其他方法可以做到这一点。为什么不直接使用String.replaceAll?@donfuxx:内部,
String.replaceAll
将生成一个正则表达式。但是,如果计划多次执行此任务,则无需每次重新编译正则表达式,因为它是静态的;不知何故给出了错误…为什么会这样?有什么想法吗?(类型模式的replaceAll(String,String)方法没有定义)我添加了一个JDoodle,这样你就可以交互式地修改你的正则表达式了。