Java-相同模式之间的模式匹配

Java-相同模式之间的模式匹配,java,regex,Java,Regex,我的示例字符串: a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg 我需要找到a之间的所有内容 我有(?您可以在正则表达式中使用lookback,将其更改为同时使用lookahead: (?<=a).*(?=a|$) 编辑:a |$来自下面tobias_k的评论,最初它只是a您可以像这样尝试正则表达式(并忽略第一个值) O/p: 您可以在有“a”的位置拆分字符串,然后修剪空格并将其保存在ArrayList中。然后,如果要打印整个单词,可以使用St

我的示例字符串:

 a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg
我需要找到a之间的所有内容


我有
(?您可以在正则表达式中使用lookback,将其更改为同时使用lookahead:

(?<=a).*(?=a|$)

编辑:
a |$
来自下面tobias_k的评论,最初它只是
a

您可以像这样尝试正则表达式(并忽略第一个值)

O/p:


您可以在有“a”的位置拆分字符串,然后修剪空格并将其保存在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);
String word=“a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg”;
列表=新的ArrayList();
list=Arrays.asList(word.split(“a”);
StringBuilder sb=新的StringBuilder();
用于(字符串项:列表){
项目.修剪();
系统输出打印项次(项);
某人附加(项目);
}
系统输出打印LN(sb);

@GopsAB-是的。您可以尝试只匹配前两个字符串,因为您可以将前瞻更改为
a |$
,以解决此问题。@GopsAB也应该匹配第三个字符串。想法相同。但最终使用了regex。
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);
}
// Empty String here. Since your String starts with a
ghgduysgd
fdferfdf
bvfxbgdf
gdfgdfg
   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);