我想在字符" @"之间用正则表达式分割文本。和字符列表([,。!?{}])。例如,我有下一个文本
@test,@ {@ test2,dasdas。 @ test3?} @ test4? @ TEST5!
我希望得到下一个阵列:
- 测试
- test2
- test3
- test4
- TEST5
醇>
我尝试使用下一个正则表达式
/ @(。*?)[,{}!?。] /
但它返回的数组不正确。
有人能帮助我吗?
答案 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"]