拆分具有特殊字符的字符串,也没有双引号

时间:2014-05-09 14:54:04

标签: java regex string

我一直在撰写一个关键字搜索功能的网络应用程序。如果关键字包含特殊字符(,@#<$%等),我想将关键字分为两个,包含和不包含特殊字符。

例如@apple,应该插入@apple和apple。但是,只有在字符串未用双引号括起来时才应该这样做。

对于关键字hello "@this" is just a #test

我期待hello "@this" is just a #test test

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作并查看 -

String regex = "(?<!\")([,@#<$%]{1})(\\w+)(?!\")";
String input = "hello \"@this\" is just a #test";
System.out.println(input);
System.out.println(input.replaceAll(regex, "$0 $2"));

输出

hello "@this" is just a #test
hello "@this" is just a #test test

答案 1 :(得分:0)

如果"@之间有任何字符 喜欢:hello "stuff @this" is just a #test

您可以使用此模式:[,@#<$%](?=(([^"]*"){2})*[^"]*$)(\S+)
Demo