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 如何用正则表达式拆分字符串_Java_Regex - Fatal编程技术网

Java 如何用正则表达式拆分字符串

Java 如何用正则表达式拆分字符串,java,regex,Java,Regex,我想用正则表达式在字符“@”和字符列表([,.!?{}])之间拆分文本。例如,我有下一个文本 @test,@{@test2,dasdas@test3?}@test4@测试5 我想得到下一个数组: 试验 测试2 测试3 测试4 测试5 我尝试使用下一个正则表达式 /@(.*?[,{}!?。]/ 但它返回的数组不正确。 有人能帮我吗?如果是JavaScript,下面的代码就可以了 string1=“@test,@{@test2,dasdas@test3?}@test4?@test5!” 数组1=st

我想用正则表达式在字符“@”和字符列表([,.!?{}])之间拆分文本。例如,我有下一个文本

@test,@{@test2,dasdas@test3?}@test4@测试5

我想得到下一个数组:

  • 试验
  • 测试2
  • 测试3
  • 测试4
  • 测试5
  • 我尝试使用下一个正则表达式

    /@(.*?[,{}!?。]/

    但它返回的数组不正确。

    有人能帮我吗?

    如果是JavaScript,下面的代码就可以了

    string1=“@test,@{@test2,dasdas@test3?}@test4?@test5!”


    数组1=string1.拆分(“@”);/*数组[“”,“test”,“{”,“test2,dasdas.”,“test3?}”,“test4?”,“test5!”]*/

    您可以在Javascript中使用如下内容:

    var re = /@([^,.!?{}@]+)/g; 
    var str = '@test, @{@test2, dasdas. @test3?} @test4? @test5!';
    var m;
    var arr;
    
    while ((m = re.exec(str)) !== null) {
        if (m.index === re.lastIndex)
            re.lastIndex++;
    
        arr.push(m[1]);
    }
    
    console.log(arr);
    //=> ["test", "test2", "test3", "test4", "test5"]
    

    您只需匹配一个
    @
    ,然后将一个或多个字母数字符号与
    \w+
    匹配并捕获:

    @(\w+)
    

    结果:

    test
    test2
    test3
    test4
    test5
    
    在Java中,您可以简单地匹配子字符串:

    String s = "@test, @{@test2, dasdas. @test3?} @test4? @test5!";
    Pattern pattern = Pattern.compile("@(\\w+)");
    Matcher matcher = pattern.matcher(s);
    while (matcher.find()){
        System.out.println(matcher.group(1)); 
    }
    

    请参阅(或使用存储在数组中的结果)。

    Try或类似工具,这些工具在调试正则表达式时非常有用。请发布代码。是JS吗?不是,它是带有字符串拆分方法的Java