如何通过正则表达式拆分字符串

时间:2015-09-29 14:04:50

标签: java regex

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

  

@test,@ {@ test2,dasdas。 @ test3?} @ test4? @ TEST5!

我希望得到下一个阵列:

  
      
  1. 测试
  2.   
  3. test2
  4.   
  5. test3
  6.   
  7. test4
  8.   
  9. TEST5
  10.   

我尝试使用下一个正则表达式

  

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

但它返回的数组不正确。
有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

您只需匹配\w+,然后匹配并使用@(\w+) 捕获1个或多个字母数字符号:

test
test2
test3
test4
test5

请参阅regex demo

结果:

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)); 
}

在Java中,您只需匹配子字符串:

str = "10 + 5.2^12"; // -> "10 + Math.pow(5.2, 12)"
str = "2^(12) + 6";  // -> "Math.pow(2, 12) + 6"

请参阅IDEONE demo(或another demo并将结果存储在数组中。

答案 1 :(得分:0)

如果是JavaScript,则以下工作。

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

array1 = string1.split(“@”); / * Array [“”,“test”,“{”,“test2,dasdas。”,“test3?}”,“test4?”,“test5!” ] * /

答案 2 :(得分:0)

你可以在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"]

RegEx Demo