Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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中的matcher未生成所需的输出_Java_Regex - Fatal编程技术网

java中的matcher未生成所需的输出

java中的matcher未生成所需的输出,java,regex,Java,Regex,有谁能帮我只提取VAS\u DEL\u SDC\u LB1\u ONM\u DEL,上面我试过它不起作用只需将所有字符匹配到第一个\u,在一个数字之前 nodenName = VAS_DEL_SDC_LB1_ONM_DEL_10.200.98.74; private String extractNodeName(String nodeName) { String output = ""; Matcher match = Pattern.compile("[0-9]

有谁能帮我只提取
VAS\u DEL\u SDC\u LB1\u ONM\u DEL
,上面我试过它不起作用

只需将所有字符匹配到第一个
\u
,在一个数字之前

nodenName = VAS_DEL_SDC_LB1_ONM_DEL_10.200.98.74;
private String extractNodeName(String nodeName) {
        String output = "";
        Matcher match = Pattern.compile("[0-9]+").matcher(nodeName);
        while (match.find()) {
            output.split(match.group());
        }
        return output;
    }
私有字符串提取节点名(字符串节点名){
字符串输出=”;
Matcher match=Pattern.compile(“\\w+(?试试这个:

private String extractNodeName(String nodeName) {
        String output = "";
        Matcher match = Pattern.compile("\\w+(?<!\\d|_)").matcher(nodeName);
        while (match.find()) {
            output = match.group();
        }
        return output;
}

String.split()
不会改变字符串(因为它们是不可变的)。相反,它会返回一个新的
String[]
我建议您@Avinash Raj answer,您可以测试它……这个网站非常有帮助地编译了它,匹配值是java.util.regex.Matcher[pattern=.*(?=[0-9])region=0,36 lastmatch=]输出为空非常感谢Kerwin…它的工作原理您能解释一下编译(\\w+)(它匹配字母,结尾不是数字或
(?断言不可能匹配下面的
\\d |
如果我正在考虑像这样的KOL_SDC_APP_KOL-MT-SMSRAPP3_10.6.227.60,那么输出是作为SMSRAPP来的,但我希望输出是作为KOL_SDC_APP_KOL-MT-SMSRAPP3。为此,我需要如何修改compile(\\w+(?对于您的两个示例,似乎您希望从开始到最后一个
\
,使用此
[\\w-]+(?=
替换旧的。我认为您只需要
nodenName.subString(0,nodenName.lastIndexOf(“\u”)
private String extractNodeName(String nodeName) {
        String output = "";
        Matcher match = Pattern.compile("\\w+(?<!\\d|_)").matcher(nodeName);
        while (match.find()) {
            output = match.group();
        }
        return output;
}
private static String extractNodeName(String nodeName) {
    return nodeName.replaceAll("[\\d_.]{2,}", "");
}