我的示例字符串:
a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg
我需要找到一个'之间的所有内容。
我有(?<=a).*
但它匹配后的所有内容。但我想找到一个。
第一次迭代:ghgduysgd
第二次迭代:fdferfdf
我想获得类似上面的数据进行操作。你能帮助正则表达式吗?
答案 0 :(得分:5)
您可以尝试这样的正则表达式(并忽略第一个值)
String path = "a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg";
String[] arr = path.split("(\\s+)?a(\\s+|$)"); // split based on a preceeded and followed by space
for (String s : arr) {
System.out.println(s);
}
O / P:
// Empty String here. Since your String starts with a
ghgduysgd
fdferfdf
bvfxbgdf
gdfgdfg
答案 1 :(得分:1)
你可以在正则表达式中使用lookbehind,将其更改为使用前瞻:
(?<=a).*(?=a|$)
然后让.*
非贪婪停在第一个可用的“结尾”a
:
(?<=a).*?(?=a|$)
编辑:a|$
来自下方的tobias_k评论,原来只是a
答案 2 :(得分:1)
您可以将字符串拆分为&#34; a&#34;然后修剪空格并将其保存在ArrayList中。然后,如果你想打印整个单词,你可以使用Stringbuilder来连接字符串。
String word="a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg";
List<String> list=new ArrayList<String>();
list= Arrays.asList(word.split("a"));
StringBuilder sb = new StringBuilder();
for(String item: list){
item.trim();
System.out.println(item);
sb.append(item);
}
System.out.println(sb);